You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium如何从下拉菜单中选择选项

解决Selenium下拉菜单选项选择问题(className重复时)

我来帮你搞定这个问题~既然所有选项的className都一样,那咱们就利用它们独有的data_value属性或者span内的文本内容来定位,下面给你几种实用的方案:

方案1:通过data_value属性精准定位

data_value是每个选项的唯一标识,用它定位最靠谱,推荐用CSS选择器或者XPath:

用CSS选择器实现

from selenium.webdriver.common.by import By

# 替换成你要选择的选项的data_value值
target_data_value = "你的目标data_value"
target_option = driver.find_element(By.CSS_SELECTOR, f'[data_value="{target_data_value}"]')
target_option.click()

用XPath实现

target_data_value = "你的目标data_value"
target_option = driver.find_element(By.XPATH, f'//*[@data_value="{target_data_value}"]')
target_option.click()

方案2:通过span文本内容定位

如果data_value不好获取,也可以直接根据选项显示的文本内容来定位,用XPath匹配文本即可:

target_text = "你要选择的选项文本"
# 这里的parent::*是因为span可能是选项元素的子节点,需要点击父元素触发选择(如果span本身可点击,直接定位span就行)
target_option = driver.find_element(By.XPATH, f'//span[text()="{target_text}"]/parent::*')
target_option.click()

额外小提示

如果你的下拉菜单是原生HTML的<select>标签(而非自定义组件),那可以用Selenium内置的Select类来简化操作:

from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By

select = Select(driver.find_element(By.TAG_NAME, 'select'))
# 按value属性选择(如果data_value对应select的value属性的话)
select.select_by_value("目标value值")
# 或者直接按可见文本选择
select.select_by_visible_text("目标选项文本")

不过从你描述的className和data_value来看,应该是自定义下拉组件,前面两种方案会更适配哦~

内容的提问来源于stack exchange,提问作者Vannia Alfaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:13:00