8

PyQt/QWebview を使用して、1) 特定の URL を読み込み、2) フォームに情報を入力し、3) ボタン/リンクをクリックします。実際のブラウザが必要なため、Mechanize は機能しません。

これが私のコードです:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from PyQt4 import QtCore

app = QApplication(sys.argv)
web = QWebView()
web.load(QUrl("https://www.lendingclub.com/account/gotoLogin.action"))

def fillForm():
    doc = web.page().mainFrame().documentElement()
    user = doc.findFirst("input[id=master_username]")
    passwd = doc.findFirst("input[id=master_password]")

    user.setAttribute("value", "email@email.com")
    passwd.setAttribute("value", "password")


    button = doc.findFirst("input[id=master_sign-in-submit]")
    button.evaluateJavaScript("click()")

QtCore.QObject.connect(web, QtCore.SIGNAL("loadFinished"), fillForm)
web.show()
sys.exit(app.exec_())

ページは正しく読み込まれますが、入力が行われず、フォームが送信されません。何か案は?

4

3 に答える 3

7

これは私がそれを機能させるのに役立ちました:

user.setAttribute("value", "email@email.com")
-->
user.evaluateJavaScript("this.value = 'email@email.com'")

属性とプロパティは別物です。

もう1つの修正:

click() --> this.click()
于 2012-07-05T12:06:25.980 に答える
0

Webkit / QWebViewでそれを行うことができるかもしれませんが、セレンの使用についてはどうでしょうか:http ://code.google.com/p/selenium/ ?まさにこの種のブラウザ自動化のために設計されており、優れたPythonバインディングを備えています。

于 2012-06-18T11:18:50.237 に答える