4

PyQt4.QtWebKit を使用して、自分の Web サイトのオプション リストから誕生日を自動選択しようとしていますが、うまくいきません。

ラジオボタンを選択したいときは、次のようにします。

doc = webview.page().mainFrame().documentElement()
g = doc.findFirst("input[id=gender]")
g.setAttribute("checked", "true")

または、テキスト入力を設定します。

doc = webview.page().mainFrame().documentElement()
s = doc.findFirst("input[id=say_something]")
s.setAttribute("value", "Say Hello To My Little Friends")

しかし、このオプション リストから月を選択するにはどうすればよいでしょうか。

<select tabindex="11" name="birthday_m">
 <option value="">---</option>
 <option value="1">JAN</option>
 <option value="2">FEB</option>
 <option value="3">MAR</option>
</select>
4

2 に答える 2

6

QWebKitクラスはCSS2セレクター構文を使用して要素を検索します。

したがって、必要なオプションは次のように見つけることができます。

doc = webview.page().mainFrame().documentElement()
option = doc.findFirst('select[name="birthday_m"] > option[value="3"]')

次に、次のselectedように option 要素に属性を設定できます。

option.setAttribute('selected', 'true')

ただし、何らかの理由で、これはページをすぐには更新しません (また、 を呼び出すこともありませんwebview.reload())。

したがって、すぐに更新する必要がある場合は、select要素を取得することをお勧めします。

doc = webview.page().mainFrame().documentElement()
select = doc.findFirst('select[name="birthday_m"]')

次に、選択したオプションを次のように設定します。

select.evaluateJavaScript('this.selectedIndex = 3')
于 2012-11-24T19:11:31.263 に答える
1

私はこのようにしました:

doc.evaluateJavaScript('document.getElementsByName("birthdate_m")[0].options[3].selected = true')

改善方法について、ご提案がありましたら、お知らせください。

于 2012-11-24T17:48:49.677 に答える