如何使用Python中的Selenium选择下拉菜单值?
我需要从一个下拉菜单中选择一个元素。
比如说:
<select id="fruits01" class="select" name="fruits">
<option value="0">Choose your fruits:</option>
<option value="1">Banana</option>
<option value="2">Mango</option>
</select>
1) 首先我得点击它。我是这样做的:
inputElementFruits = driver.find_element_by_xpath("//select[id='fruits']").click()
2) 然后我需要选择正确的元素,比如说Mango
(芒果)。
我试着用inputElementFruits.send_keys(...)
来实现,但没有成功。
18 个回答
51
希望这段代码能对你有所帮助。
from selenium.webdriver.support.ui import Select
通过ID选择下拉元素
ddelement= Select(driver.find_element_by_id('id_of_element'))
通过XPath选择下拉元素
ddelement= Select(driver.find_element_by_xpath('xpath_of_element'))
通过CSS选择器选择下拉元素
ddelement= Select(driver.find_element_by_css_selector('css_selector_of_element'))
从下拉菜单中选择“香蕉”
- 使用下拉菜单的索引
ddelement.select_by_index(1)
- 使用下拉菜单的值
ddelement.select_by_value('1')
- 你可以匹配下拉菜单中显示的文本。
ddelement.select_by_visible_text('Banana')
566
Selenium 提供了一个方便的 Select
类,可以用来处理 select -> option
这种结构:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver = webdriver.Firefox()
driver.get('url')
select = Select(driver.find_element_by_id('fruits01'))
# select by visible text
select.select_by_visible_text('Banana')
# select by value
select.select_by_value('1')
另外,您还可以查看:
179
除非你的点击操作会触发某种ajax请求来填充列表,否则其实不需要真的去执行这个点击。
你只需要找到那个元素,然后列出所有选项,选择你想要的选项就可以了。
下面是一个例子:
from selenium import webdriver
b = webdriver.Firefox()
b.find_element_by_xpath("//select[@name='element_name']/option[text()='option_text']").click()
你可以在这里了解更多信息:
https://sqa.stackexchange.com/questions/1355/unable-to-select-an-option-using-seleniums-python-webdriver