4

我正在尝试使用 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>
4

2 回答 2

6

这些QWebKit类使用CSS2 选择器语法来查找元素。

所以可以像这样找到所需的选项:

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

然后selected可以像这样在选项元素上设置属性:

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

但是,由于某种原因,这不会立即更新页面(也不会调用webview.reload())。

So if you need an immediate update, a better way might be to get the select element:

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

and then set the selected option like so:

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 回答