如何使用Python Selenium操作仅用div实现无options标签的下拉菜单
非原生
<select>的自定义div下拉菜单Selenium选择方案 
这类没有<options>标签的自定义下拉菜单,无法使用Selenium自带的Select类操作,可按以下步骤实现选项选择:
- 第一步:触发下拉框展开
先定位到当前显示选中国家(示例中为Uruguay)的触发div元素,执行点击操作,使下拉选项全部渲染到页面DOM中。推荐添加显示等待保证元素可点击,示例代码:from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 替换为实际的触发元素定位规则 trigger_ele = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@class, 'dropdown-trigger')]"))) trigger_ele.click() - 第二步:定位目标选项
下拉框展开后,通过文本匹配定位需要选中的国家选项,推荐先定位下拉选项的父容器,再缩小匹配范围避免匹配到页面其他同名文本,示例代码:# 替换为实际目标国家名称、选项类名 target_country = "Argentina" option_ele = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, f"//div[contains(@class, 'dropdown-option') and text()='{target_country}']"))) - 第三步:选中目标选项
直接点击定位到的选项元素即可完成选择,若遇到点击无效的情况可改用JS触发点击:# 常规点击 option_ele.click() # 点击无效时用JS点击 # driver.execute_script("arguments[0].click();", option_ele)
常见场景适配
- 选项超出可视区域:先执行滚动操作把目标选项滚动到可视区再点击:
driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", option_ele) - 文本存在前后空格/动态后缀:改用模糊匹配规则
contains(text(), '目标国家名')即可。 - 选中后需要验证:可以获取触发div的文本判断是否和选中的国家一致,确认操作生效。
内容的提问来源于stack exchange,提问作者infamous_dream
相关产品推荐
相关产品推荐

