2012-11-24 55 views
4

我想通過使用PyQt4.QtWebKit從我的網站上的選項列表中自動選擇一個生日,但我在執行此操作時遇到問題。如何使用PyQt4.QtWebKit從選項列表中選擇值

當我想選擇一個單選按鈕,我這樣做:

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> 

回答

6

QWebKit類使用CSS2 selector syntax來查找元素。

因此所需的選項可以發現這樣的:

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

,然後selected屬性可以選擇元素上這樣設置:

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

然而,出於某種原因,這不會立即更新頁面(也不會調用webview.reload())。

所以如果你需要立即更新,更好的方法可能是讓select元素:

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

,然後設置所選的選項,如下所示:

select.evaluateJavaScript('this.selectedIndex = 3') 
+0

非常感謝您對你的答案 – Vor

1

我就是這麼做的:

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

如果您有任何建議,就如何改進它,請讓我knnow。

相關問題