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

Python Selenium操作自定义下拉框失败,求解决方案

解决Selenium操作自定义下拉框的问题

错误原因分析

  1. AttributeError 根源:你使用了driver.find_elements()方法,它返回的是元素列表,而Select构造函数要求传入单个WebElement对象,因此触发了'list' object has no attribute 'tag_name'错误。需要改用driver.find_element()(单数形式)获取单个元素。
  2. 原生select不可操作:页面中的<select>元素被设置为display: none,Selenium默认禁止操作不可见元素,即使你找到该元素,直接用Select类也可能无法正常工作。

解决方案

方案一:模拟用户交互操作自定义下拉框(推荐)

这类UI框架会用自定义组件包裹原生select,用户实际操作的是可见的下拉容器而非隐藏的select。正确步骤是点击容器展开选项,再选择目标选项:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待下拉容器可点击并展开
dropdown = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CLASS_NAME, "sui-dropdown"))
)
dropdown.click()

# 等待目标选项出现并点击(示例选择"CI")
target_option = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//select[@class='dropdown-soberanos-plazo']/option[@value='CI']"))
)
target_option.click()

# 若原生option无法被点击,可尝试定位页面展开后的可见选项元素(需根据实际DOM调整,比如:)
# target_option = WebDriverWait(driver, 10).until(
#     EC.element_to_be_clickable((By.XPATH, "//span[text()='CI']"))
# )
# target_option.click()

方案二:强制操作隐藏的原生select(不推荐)

通过JavaScript临时显示隐藏的select元素,再使用Select类操作:

from selenium.webdriver.support.select import Select

# 获取隐藏的select元素
select_elem = driver.find_element(By.CLASS_NAME, "dropdown-soberanos-plazo")

# 执行JS显示元素
driver.execute_script("arguments[0].style.display = 'block';", select_elem)

# 使用Select类选择选项
select = Select(select_elem)
select.select_by_value("24hs")  # 通过value选择
# 或 select.select_by_visible_text("48hs")  # 通过可见文本选择

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:15:35