QWebKit - Запустить функцию JavaScript страницы? - PullRequest
1 голос
/ 29 октября 2011

В основном я хочу перейти в настройки моего маршрутизатора,
установить флажок и затем вызвать функцию на странице,
все программно.

Я знаю весь 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 запускается, так как я могу проверить его с помощью Alerts.

Однако, функция или флажок "html" checked () "маршрутизаторов не запускаются / не изменяются.
Это похоже наНа самом деле я не взаимодействую со страницей, а с копией.

Я допускаю здесь огромную ошибку новичка?


Характеристики:
python 2.7
PyQt4
QWebKit
Windows 7

1 Ответ

0 голосов
/ 30 октября 2011

Возможно, вам следует дождаться окончания загрузки страницы, переместив оценку javascript в слот, подключенный к сигналу loadFinished().

Но, как предложил Пойнти, вы также можете попытаться отправлять POST-запросы самостоятельно, через QNetworkAccessManager, вместо использования виджета.

...