You need to enable JavaScript to run this app. 如何在Python(Jupyter Notebook)中使用Selenium选择下拉框选项
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python(Jupyter Notebook)中使用Selenium选择下拉框选项

你之前的代码直接在WebElement对象上调用Select类的专属方法,自然不会生效。Selenium所有select_by_*类的方法都需要先将找到的下拉元素包装为Select实例后才能调用,以下是对应场景的解决方案:


场景1:目标元素是原生<select>标签

先导入必要依赖:

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

替换你原来的年份选择部分代码即可:

# 先等待元素加载完成可交互,避免页面未渲染完成导致操作失效
typetextyear = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "couples-search-year"))
)
# 将元素包装为Select实例
year_select = Select(typetextyear)
# 按可见文本选择2021,三种方式选一种即可
year_select.select_by_visible_text("2021")
# 可选:按索引选择,注意索引从0开始,若2021是第二个选项可使用该方法
# year_select.select_by_index(1)
# 可选:按选项的value属性值选择
# year_select.select_by_value("2021")

场景2:目标是自定义实现的非原生下拉框

很多现代网站会用div等标签自定义下拉组件,这种场景原生Select方法完全不生效,用点击选择方案即可:

# 点击年份输入框,展开下拉选项列表
typetextyear.click()
# 等待2021选项加载完成后点击
year_option = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//*[contains(text(),'2021')]"))
)
year_option.click()

兜底方案

如果上述方案都不生效,可以直接用JavaScript强制给输入框赋值:

driver.execute_script("arguments[0].value = '2021';", typetextyear)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:15:03