基本上我想进入我的路由器设置,
设置一个检查按钮,然后在页面上调用一个函数,
所有以编程方式。
我知道要执行此操作的所有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
答案 0 :(得分:0)
您应该等待页面完成加载,方法是将javascript评估移动到连接到loadFinished()
信号的插槽。
但正如Pointy建议的那样,您也可以尝试通过QNetworkAccessManager
自行发送POST请求,而不是使用小部件。