Ahm*_*Ali 2 python selenium pyqt
我在 Python 中使用 Selenium。单击按钮时,我在寡妇 Python 中收到一条消息:
####文件:qu在寡妇 Python 中没有响应
我有以下脚本:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
#####
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(800, 600)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(340, 110, 75, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.pushButton_2 = QtGui.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(324, 200, 111, 23))
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.lineEdit = QtGui.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(390, 240, 151, 20))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
QtCore.QObject.connect(self.pushButton,QtCore.SIGNAL(_fromUtf8("clicked()")), self.log)
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), self.log2)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.pushButton.setText(_translate("MainWindow", "PushButton", None))
self.pushButton_2.setText(_translate("MainWindow", "PushButton_2", None))
def log(self):############################
from qf import functon
n=functon()
n.log1()
def log2(self):
from qf import functon
n=functon()
n.log3()
Run Code Online (Sandbox Code Playgroud)
###文件:qm
# -*- coding: utf-8 -*-
from PyQt4 import QtGui
from PyQt4.QtGui import QApplication
from PyQt4 import QtCore, QtGui
import sys
from qu import Ui_MainWindow
class MainWindow(QtGui.QMainWindow,Ui_MainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = MainWindow()
myapp.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
文件:qf
from selenium import webdriver
from PyQt4 import QtCore, QtGui
import sys
from qu import Ui_MainWindow
class functon ():
def __init__(self, parent=None):
self.parent=parent
def log1(self):
browser =webdriver.Firefox()
browser.get( "http://google.com" )
def log3(self):
text =unicode(self.lineEdit.text())
print text
Run Code Online (Sandbox Code Playgroud)
实际上,您的主 GUI 根本没有被冻结,而只是log在执行时将控制权返回给主 GUI,因为您没有在应用程序中实现任何类型的线程机制。
因此,作为解决方案,您需要线程 log方法不阻塞您的主 GUI,使用threading模块,以下是通用方法,您需要阅读更多关于threading:
1 -import threading在您的qu.py文件中
2 - 也定义此方法qu.py:
def launch_Selenium_Thread(self):
t = threading.Thread(target=self.log)
t.start()
Run Code Online (Sandbox Code Playgroud)
3 - 将connect方法更改pushButton为:
QtCore.QObject.connect(self.pushButton,QtCore.SIGNAL(_fromUtf8("clicked()")), self.launch_Selenium_Thread)
Run Code Online (Sandbox Code Playgroud)
4 - 添加qf.py log3方法,txt参数:
def log3(self, txt):
text =unicode(txt)
print text
Run Code Online (Sandbox Code Playgroud)
5 - 最后修复qu.py log2方法:
def log2(self):
from qf import functon
n=functon()
txt = self.lineEdit.text()
n.log3(txt)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5469 次 |
| 最近记录: |