QWebKit - Запустить функцию JavaScript страницы?
В основном я хочу зайти в настройки моего маршрутизатора,
установить флажок и затем вызвать функцию на странице,
все программно.
Я знаю весь JavaScript, чтобы сделать это,
и может сделать это через консоль Google 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 "флажок ()" маршрутизаторов не запускаются и не изменяются.
Как будто я на самом деле не взаимодействую со страницей, а с копией.
Я делаю огромную ошибку новичка здесь?
Технические характеристики:
Python 2.7
PyQt4
QWebKit
Windows 7
1 ответ
Вам, вероятно, следует дождаться окончания загрузки страницы, переместив оценку JavaScript в слот, подключенный к loadFinished()
сигнал.
Но, как предложил Пойнти, вы также можете попытаться отправить POST-запросы самостоятельно, через QNetworkAccessManager
вместо использования виджета.