如何通过Python的Splinter模块选择页面下拉列表中的特定元素?

6 投票
4 回答
7122 浏览
提问于 2025-04-18 07:26

我可以通过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()

撰写回答