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

使用Python Selenium操作网页时无法选中第二个下拉框选项如何解决

问题原因
  • 你操作的第二个基金下拉框使用了Bootstrap Select前端组件,原生<select>标签被设置为不可见,Selenium的Select类仅支持操作原生可见的select元素,所以直接调用会失效。
  • 你之前的写法定位错了元素:data-original-index属性是挂载在每个选项对应的<li>标签上,不是外层<ul>标签,所以只能选中第一个索引对应的ul下的第一个元素,其他索引无法匹配。
  • 第一个下拉框选中后第二个下拉框的选项是联动异步加载的,没有等待加载完成就操作也会导致选中失败。
稳定实现方案

直接操作Bootstrap Select生成的可见元素即可,代码如下:

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

import time
import os
import wget

driver = webdriver.Chrome('chromedriver')
driver.get('https://www.hkbea.com/jsp/hk/bea-mpf-fund-information2.jsp?language=en')
wait = WebDriverWait(driver, 10)

# 选择第一个计划下拉框
scheme_name = Select(driver.find_element(By.ID, "mpfGroup"))
scheme_name.select_by_visible_text('BEA (MPF) Master Trust Scheme')

# 等待第二个下拉框联动加载完成
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'select#mpfFunds option[value="AGF"]')))

# 点击展开基金下拉框
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[data-id="mpfFunds"]'))).click()

# 方式1:按value值选中对应选项
target_option = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'ul.dropdown-menu.inner li a[rel="AGF"]')))
target_option.click()

# 方式2:按可见文本选中对应选项,替换掉上面方式1的代码即可
# target_text = "BEA (MPF) Asian Equity Fund"
# target_option = wait.until(EC.element_to_be_clickable((By.XPATH, f'//ul[@class="dropdown-menu inner"]/li/a/span[text()="{target_text}"]')))
# target_option.click()
代码说明
  • 新增了等待原生select下option加载完成的逻辑,保证两个下拉框的联动执行完毕,避免选空
  • Bootstrap Select生成的每个选项的<a>标签的rel属性和原生select的option的value属性一一对应,直接定位该元素点击即可实现和select_by_value相同的效果
  • 按文本选择的适配方案可以满足需要根据显示内容选择的场景,稳定性和按value选择一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:09:04