使用selenium定位input标签下的下拉框

先来看一下页面效果:是一个可输入的下拉列表

再来看一下下拉框的实现方式: 是用<ul>和<li>方式来实现的下拉框,不是select类型的,所以不能用传统的select定位方法。

在着手定位元素前一定一定要先弄清楚下拉列表的实现方式!!! 我一开始就是看到是下拉列表,想当然的采用select方法来定位,然后报错了QAQ ,大概意思是说该元素不支持使用select方法,然后才想着看一下实现代码,结果才发现下拉框字段是在<input>标签下的。

解决思路:

 1、定位下拉框

 2、因为是<input>标签,因此使用send_keys方法给下拉框传值

 3、定位到下拉项

 4、点击下拉项

代码实现:

py 复制代码
# 导入包
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 定位下拉框
mcc_name = 'body > div.el-dialog__wrapper.created-small-margin > div > div.el-dialog__body > div > form > div:nth-child(5) > div > div > div > input'

# 使用send_keys方法给下拉框传值
industry = driver.find_element(By.CSS_SELECTOR, mcc_name)
industry.send_keys('零售业 / 综合零售 / 百货商店')
time.sleep(1)

# 定位下拉项
indus = 'body > div.el-popper.el-cascader__dropdown > div.el-cascader__suggestion-panel.el-scrollbar > div.el-scrollbar__wrap > ul > li'

# 点击下拉项   
driver.find_element(By.CSS_SELECTOR, indus).click()

常见问题 :

元素定位不到怎么办?

多尝试几种定位方式,这个不行换另一个试试,八种定位方式总有一种适合。

另外,不要太过依赖F12直接copy的selector和Xpath, 因为很有可能就是这个原因导致的!!!有很多时候直接copy过来拿去定位,就会定位不到,实在不行手动输入定位一下。

适当的添加延时时间。 很多时候操作太快也有可能导致元素定位不到,比如在这个例子的给下拉框传值和点击下拉项之间,如果不添加延时time.sleep(1),也会导致下拉项元素定位不到。

相关推荐
wuyk5555 分钟前
PyQt6-第14讲-数据库与Excel双向同步
数据库·python·ui·excel·pyqt
我的xiaodoujiao13 分钟前
Django 权限系统项目实战详细图文教程 3--系统登录功能实现
后端·python·django
努力变大白19 分钟前
ReAct Agent 创建:tools 协议与文本 ReAct 双路线实践
python·agent·react框架
vipxieliang26 分钟前
Python 面向对象编程:类、继承、多态与组合
python
Nuanyt28 分钟前
Agent 学习笔记(下篇二):Claude Code 生态、RAG 与 Memory(Stage 5–6)
笔记·python·memory·rag·aiagent·claude code·agentskill
用户2986985301429 分钟前
Python 实战:Markdown 转 PDF 的代码实现与页面设置
python·api·markdown
thusloop30 分钟前
零门槛接入 GPT-6-astra 与 claude-opus-5-5,三大场景实战指南
python·gpt·算法·agent·claude·codex
程序猿乐锅41 分钟前
Streamlit 实现 AI 聊天 Agent:角色提示词、流式输出与会话管理
开发语言·前端·笔记·后端·python·学习
小南知更鸟1 小时前
【2026 年 Python 包管理工具选型:从“工具崇拜”回到工程约束】
开发语言·python
TomEval1 小时前
【测AI】第20篇:大模型安全测试 —— 越狱攻击与防护
人工智能·python·功能测试·ai·aigc·测试用例·安全性测试