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вместо использования виджета.

Другие вопросы по тегам