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

Python Selenium通过索引点击下拉菜单li标签失效问题求解

错误原因

你之前的写法给索引拼接了多余的单引号,最终生成的XPath为li['2'],XPath解析时会把单引号包裹的内容当做布尔表达式判断,非空字符串默认返回True,因此所有li元素都匹配该规则,Selenium默认取第一个匹配的元素,也就是索引为1的--Select--选项。


正确实现方案

1. 动态索引定位写法(推荐f-string方案,Python3.6+支持)

直接用f-string格式化XPath,不需要额外加引号包裹索引变量:

i = 2
driver.find_element(By.XPATH, f"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li[{i}]").click()

如果需要兼容低版本Python,也可以用str.format()写法:

i = 2
driver.find_element(By.XPATH, "//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li[{}]".format(i)).click()

2. 完整循环点击所有选项示例

注意XPath的li索引是1开始计数,你的7个选项对应索引范围1~7,每次点击前要确保下拉菜单处于展开状态:

# 先定位下拉菜单触发按钮(请根据实际页面元素修改选择器)
dropdown_trigger = driver.find_element(By.ID, "ContentPlaceHolder1_rcmbCapacityTranch")

# 循环遍历所有7个选项
for i in range(1, 8):
    # 点击展开下拉菜单,防止上一次点击后菜单收起导致元素找不到
    dropdown_trigger.click()
    # 可选:加显式等待确保li元素加载完成
    option = driver.find_element(By.XPATH, f"//div[@id='ContentPlaceHolder1_rcmbCapacityTranch_DropDown']/div/ul/li[{i}]")
    option.click()
    # 此处可添加点击选项后的后续业务逻辑代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:03