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

如何用Selenium操作Kendo下拉框并选择选项?

解决Kendo UI下拉框的Selenium自动化问题

先说说你之前为啥失败:

  • By.CLASS_NAME只能传单个类名,你写的'k-widget k-dropdown k-header'会被当成一个完整的类名,页面里根本没有这个类,所以找不到元素。
  • Kendo下拉框是自定义UI组件,不是HTML原生的<select>标签,Selenium自带的Select类对它完全没用。

正确操作流程

Kendo下拉框得先触发展开,再点选选项,分两步来:

第一步:展开下拉框

优先找下拉框里的可点击区域,比如带箭头的.k-select,或者外层的.k-dropdown-wrap,用CSS选择器定位最靠谱:

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

# 先等元素加载好再操作,避免未渲染完成的问题
dropdown_wrap = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, 'kendo-dropdownlist .k-dropdown-wrap'))
)
dropdown_wrap.click()

嫌麻烦也可以直接点箭头按钮:

dropdown_arrow = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, 'kendo-dropdownlist .k-select'))
)
dropdown_arrow.click()

第二步:选择目标选项

展开后,Kendo会动态生成一个下拉列表(一般是<ul class="k-list-ul">下面的<li>元素),你可以通过文本或者value属性定位:

# 按选项文本找,把"你的报表名称"换成你要选的实际内容
target_option = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//ul[contains(@class, "k-list-ul")]/li[text()="你的报表名称"]'))
)
target_option.click()

如果选项有明确的value属性,用CSS选择器更简洁:

# 把"目标value值"换成选项实际的value属性值
target_option = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, 'ul.k-list-ul li[data-value="目标value值"]'))
)
target_option.click()

额外提醒

  • 一定要用WebDriverWait显式等待,别用time.sleep(),避免页面未加载完成就操作的问题。
  • 如果页面有多个Kendo下拉框,得加更精准的定位条件,比如你提供的下拉框里有个id="CC"的span,就可以这么写:
dropdown_wrap = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, 'span#CC.k-dropdown-wrap'))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:43:27