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

Python Selenium使用Select类操作下拉框无法选中选项如何解决?

问题解决方法

失效原因

你遇到的是典型的自定义绑定事件下拉框适配问题:该站点的区域下拉框绑定了专属的change事件监听,Selenium原生的Select类操作有时无法主动触发该事件,导致页面没有响应选中操作。

可行解决步骤

  • 第一步:添加显式等待,确保点击年龄确认按钮后,下拉框元素完全加载可交互,避免元素未渲染就执行操作的问题
  • 第二步:放弃原生Select类操作,改用execute_script直接通过JS修改下拉框选中值,同时手动触发change事件,保证页面响应选中结果

可直接运行的修改后代码

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

def main(website):
    driver = webdriver.Chrome(executable_path='chromedriver_win32/chromedriver.exe')
    driver.get(website)
    # 等待年龄确认按钮可点击再操作
    acceptage_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/header/div[2]/input[1]"))
    )
    acceptage_btn.click()
    
    # 等待区域下拉框加载完成
    region_select = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "/html/body/div[1]/main/form/fieldset/div[1]/select"))
    )
    # 用JS直接设置选中值,同时触发change事件
    driver.execute_script("""
        arguments[0].value = '3';
        arguments[0].dispatchEvent(new Event('change'));
    """, region_select)

if __name__ == "__main__":
    main('https://www.shop.liquorland.co.nz/splash.aspx?ReturnUrl=%2f')

补充说明

如果需要选中其他区域,只需要修改JS代码里的value值,或者对应调整JS逻辑匹配visible_text的筛选规则即可,该方案兼容大部分有自定义事件绑定的下拉框场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:15:06