1

基本的に、ルーターの設定に入り、チェックボタンを設定し、ページ上の関数を すべてプログラム
で呼び出したいと考えています。

これを行うためのすべての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 "checked()" 関数またはチェックボックスは実行/変更されません。
私は実際にページを操作しているわけではなく、コピーのようです。

ここで私は大きな初歩的なミスを犯していますか?


仕様:
python 2.7
PyQt4
QWebKit
Windows 7

4

1 に答える 1

0

loadFinished()おそらく、シグナルに接続されたスロットに JavaScript 評価を移動して、ページの読み込みが完了するまで待つ必要があります。

QNetworkAccessManagerしかし、Pointy が提案したように、ウィジェットを使用する代わりに、POST リクエストを自分で送信することもできます。

于 2011-10-29T23:13:01.680 に答える