QWebKit - 运行页面的javascript函数?

时间:2011-10-29 13:08:09

标签: javascript python pyqt4 qwebkit

基本上我想进入我的路由器设置,
设置一个检查按钮,然后在页面上调用一个函数,
所有以编程方式。

我知道要执行此操作的所有javascript,
并且可以通过谷歌Chrome控制台完成。

我可以通过QWebKit语法执行它,
但实际页面仍未受影响。

import sys
from PyQt4 import QtCore, QtGui, QtWebKit

class Browser(QtWebKit.QWebView):
    def __init__(self, parent = None):
        super(Browser, self).__init__()
        self.changepage()

    def changepage(self):
        self.load(QtCore.QUrl("http://192.168.0.1/adv_mac_filter.php"))
        x1 = self.page().mainFrame()
        x1.evaluateJavaScript("entry_enable_1.checked = true;")
        x1.evaluateJavaScript("check();")


app = QtGui.QApplication(sys.argv)
x = Browser()
x.show()
sys.exit(app.exec_())

(是的,此代码要求我已登录到我的路由器设置)
我知道JavaScript正在运行,因为我可以使用警报进行测试。

但是,路由器的html“checked()”函数或复选框未运行/更改 这就像我实际上并没有与页面进行交互,而是一个副本。

我在这里犯了一个巨大的菜鸟错误吗?


规格:
python 2.7
PyQt4中
QWebKit
Windows 7

1 个答案:

答案 0 :(得分:0)

您应该等待页面完成加载,方法是将javascript评估移动到连接到loadFinished()信号的插槽。

但正如Pointy建议的那样,您也可以尝试通过QNetworkAccessManager自行发送POST请求,而不是使用小部件。