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

Selenium无法操作Kendo Dropdownlist:无法选择下拉选项

解决Selenium操作Kendo Angular Dropdownlist的问题

核心问题分析

Kendo下拉组件依赖动态渲染的kendo-popup弹窗,弹窗一旦失去焦点就会自动隐藏,导致直接定位弹窗元素时弹窗消失;同时普通元素定位逻辑可能不匹配组件的动态交互机制,造成无法选中选项。

可行解决方案

方法1:用ActionChains保持弹窗焦点并点击选项

通过ActionChains连续操作,避免弹窗因焦点丢失隐藏:

from selenium.webdriver.common.action_chains import ActionChains
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.CSS_SELECTOR, "kendo-dropdownlist"))
)
dropdown.click()

# 等待目标选项可见(替换文本为你需要选中的选项内容)
target_option = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.XPATH, "//div[contains(@class, 'k-list-item') and text()='Option 2']"))
)

# 移动到选项并点击
ActionChains(driver).move_to_element(target_option).click().perform()

方法2:通过JavaScript直接设置组件值

绕过UI交互,直接操作组件的绑定数据:

# 替换成目标选项对应的value值和组件实际绑定逻辑
driver.execute_script("""
    const dropdown = document.querySelector('kendo-dropdownlist');
    dropdown.value = '目标选项的value';
    dropdown.dispatchEvent(new Event('valueChange'));
""")

方法3:模拟键盘选择(适合选项数量少的场景)

点击下拉框后,用键盘方向键定位选项再回车确认:

from selenium.webdriver.common.keys import Keys

dropdown = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "kendo-dropdownlist"))
)
dropdown.click()

# 根据选项位置调整方向键次数,这里示例按3次下箭头
for _ in range(3):
    dropdown.send_keys(Keys.ARROW_DOWN)
dropdown.send_keys(Keys.ENTER)

注意事项

  • 必须使用WebDriverWait等待元素状态,避免组件未加载完成导致操作失败。
  • Kendo组件的class可能随版本变化,比如k-list-item可能变为k-item,需根据页面实际DOM调整选择器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:22:05