QtWebKit - English / Javascript Inventory

I am testing Python with QtWebkit / Spynner. Since QtWebKit supports Javascript in the same way as Chrome Webkit, is it possible to add custom text or part of javascript to the top of the page , as if you were a regular script user in Chrome?

Hope a simple question for such an experience! Thanks in advance!

+3
source share
2 answers

You can use the following approach:

, capybara-webkit . , Python, Qt Python.

+2

( .): capybara-webkit (frameCreated-javaScriptWindowObjectCleared) sender() injectJavascriptHelpers(), .

"javaScriptWindowObjectCleared" mainFrame() .

, PyQt (no qml then):

class 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)
0

All Articles