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

如何使用Selenium WebDriver从带<aria-activedescendant>的动态下拉框选文本?

如何用Selenium WebDriver从带aria-activedescendant的动态组合框中选择文本

看你提供的HTML,这明显是Select2组件——原生的<select>被隐藏了(aria-hidden="true"),实际交互的是Select2生成的动态DOM元素,这类组件通常会用aria-activedescendant来标记当前聚焦的下拉选项。下面给你一步步的解决方案:

步骤1:定位并点击Select2的触发按钮,打开下拉列表

Select2会给原生<select>生成一个对应的触发容器,通常是带select2-container类的div,你可以通过原生select的id来关联定位。比如原生id是id_event_operator,那么触发容器的id一般是select2-id_event_operator-container。

用Python的Selenium代码示例:

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

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

# 点击Select2触发按钮,打开下拉框
select2_trigger = wait.until(EC.element_to_be_clickable((By.ID, "select2-id_event_operator-container")))
select2_trigger.click()

步骤2:定位并选择目标选项

下拉列表打开后,Select2会生成一个带select2-results__options类的列表容器,里面的每个选项是带select2-results__option类的元素。你可以通过文本内容定位,或者利用aria-activedescendant的关联逻辑(不过直接按文本定位更直观)。

方式A:直接点击目标选项(如果选项可见)

# 定位要选择的选项,比如文本包含"liveeventuplynktest01@test.co"的选项
target_option = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[contains(text(), 'liveeventuplynktest01@test.co')]")))
target_option.click()

方式B:如果是可搜索的Select2,先输入文本再选择

如果你的Select2支持搜索,可以先在搜索框输入关键词,再选择匹配的选项:

# 定位搜索输入框(Select2的搜索框通常带select2-search__field类)
search_box = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "select2-search__field")))
search_box.send_keys("liveeventuplynktest01@test.co")

# 等待匹配的选项出现并点击
matched_option = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[contains(text(), 'liveeventuplynktest01@test.co')]")))
matched_option.click()

为什么不能直接操作原生<select>?

虽然你能看到原生的<select>标签,但它被设置为aria-hidden="true",而且Select2组件的交互逻辑是绑定在自己生成的动态DOM上的,直接用Select类操作原生select可能不会触发组件的JS事件,导致页面状态不更新。

注意事项

  • 要确保等待元素加载完成,避免元素未就绪就操作(用WebDriverWait显式等待是最佳实践)
  • 如果页面有多个Select2组件,定位时要更精准,比如通过父元素或者更具体的xpath来区分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:31:02