如何通过Python的Splinter模块选择页面下拉列表中的特定元素?
我可以通过Python中的splinter模块从页面上的下拉列表中选择一个特定的元素吗?
我有以下的HTML代码:
<select id="xyz">
<optgroup label="Group1">
<option value="1">pick1</option>
<option value="2">pick2</option>
</optgroup>
<optgroup label="Group2">
<option value="3">pick3</option>
<option value="4">pick4</option>
</optgroup>
</select>
假设我需要选择“pick3”这个选项。我该怎么做呢?
4 个回答
0
因为我现在也遇到这个问题,所以想分享一下我的看法。找到选择框元素后,使用 'select(option_value)' 这个方法会生成一个叫做 xpath 的路径:'//select[@name="%s"]/option[@value="%s"]' 来找到选项。如果你像你例子中那样使用了 optgroups(选项组),这个 xpath 就会失效。
你可以用下面的代码找到元素:
element = browser.find_by_xpath('//select[@id="xyz"]//option[@value="3"]').first
然后点击它。正如 alecxe 所建议的,这样应该就能解决问题。
1
你还可以试试下面这个方法,使用 select_by_text()
。
browser.find_by_id('xyz').select_by_text("pick3")
1
尝试一下
browser.find_option_by_text('pick3').first.click()
8
首先,使用 find_by_id()
方法找到 select
元素,然后用 select()
方法来选择一个选项:
element = browser.find_by_id('xyz').first
element.select('3')
另外一种解决方案是使用 find_by_xpath()
和 click()
方法:
element = browser.find_by_xpath('//select[@id="xyz"]//option[@value="3"]').first
element.click()