QtWebKit-Userscript/Javascript注入
我一直在使用QtWebkit/Spynner在Python中进行测试工作。由于QtWebKit与Chrome的Webkit一样支持Javascript,是否可以像Chrome中的常规用户脚本一样,在页面开始处注入用户脚本或Javascript片段QtWebKit-Userscript/Javascript注入,javascript,python,qtwebkit,userscripts,spynner,Javascript,Python,Qtwebkit,Userscripts,Spynner,我一直在使用QtWebkit/Spynner在Python中进行测试工作。由于QtWebKit与Chrome的Webkit一样支持Javascript,是否可以像Chrome中的常规用户脚本一样,在页面开始处注入用户脚本或Javascript片段 希望这是一个简单的问题!提前谢谢 您可以使用以下方法: 为注册一个处理程序 在该事件处理程序中,为注册一个新的事件处理程序 在第二个事件处理程序中,使用(或Spynner的runjs方法)运行Javascript 这是执行其实用程序脚本所采用的方法。不
希望这是一个简单的问题!提前谢谢 您可以使用以下方法:
runjs
方法)运行Javascriptclass InstrumentedPage(PyQt5.QtWebKitWidgets.QWebPage):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.loadFinished.connect(self.finished)
self.mainFrame().javaScriptWindowObjectCleared.connect(self.initYourJavascriptAtTheBeginningHere)
def javaScriptConsoleMessage(self, message, lineNumber, sourceID):
message = "%s (%s:%d)" % (message, sourceID, lineNumber)
self.__logger.info("JS :: %s" % message )
def initYourJavascriptAtTheBeginningHere(self):
js = "console.log(\"INITED\");"
self.mainFrame().evaluateJavaScript(js)
def injectYourJavascriptHere(self, js):
return self.mainFrame().evaluateJavaScript(js)
def finished(self, status):
self.__logger.info("InstrumentedPage.finished() :: init status => %s" % status)
class MainWindow(PyQt5.QtWidgets.QWidget):
def __init__(self, config, config_file_name, parent=None):
super().__init__(parent)
self.ui = Ui_MainWindow.Ui_MainWindow()
self.ui.setupUi( self )
self.web_page = InstrumentedPage()
self.ui.webView.setPage(self.web_page)