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

Python Selenium如何点击选择无select标签的下拉列表li选项

问题根因

Selenium 内置的 Select 类仅支持原生 <select> 标签实现的下拉菜单,你当前遇到的是基于 ul/li 自定义实现的下拉组件,所以Select类的所有方法都不适用,send_keys对非输入类元素也无效。

可行解决方案

点击展开下拉菜单后,直接定位到对应选项的li元素并触发点击即可,有两种常用定位方式:

  • 按选项可见文本定位
  • 按li的data-value属性定位
修改后的完整代码
from selenium import webdriver
import time

edge_options = {
    "executable_path": "/edgedriver_mac64/msedgedriver",
    "capabilities": {
        "platformName": 'mac os x',
    }
}
browser = webdriver.Edge(**edge_options)
browser.get('https://kstory.hangame.com/en/index')

time.sleep(2)

# 点击展开下拉
select_server = browser.find_element_by_css_selector("span[class='js-selected-text']")
select_server.click()
time.sleep(1) # 等待下拉选项完全渲染

# 方式1:按可见文本选择Conquest(US)
target_option = browser.find_element_by_xpath("//ul[contains(@class,'js-select-form')]/li[text()='Conquest(US)']")
# 方式2:按data-value属性选择,对应Conquest(US)的data-value是4
# target_option = browser.find_element_by_xpath("//ul[contains(@class,'js-select-form')]/li[@data-value='4']")

# 点击选中选项
target_option.click()
优化建议

可以把硬等待time.sleep()替换为Selenium的显式等待,避免网络波动导致元素未加载完成报错,示例如下:

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

# 最多等待10秒,直到下拉展开按钮可点击
wait = WebDriverWait(browser, 10)
select_server = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.js-selected-text")))
select_server.click()

# 等待目标选项可点击后再点击
target_option = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[text()='Conquest(US)']")))
target_option.click()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:36:04