Python + Selenium 定位非selected型下拉框的方法
最近在尝试给自己负责的模块写UI自动化的Demo
登录及切换页面比较顺利
但是遇到下拉框的选择时,遇到了一点困难
我负责的模块页面的下拉框并非Select类型,无法使用select_by_index or select_by_value等方法
其下拉框的html长这样:

是ul下包裹100+li的形式
先说一下错误路径:
(1)先定位到产品名称字段,然后通过send_key()把想要录入的值输入
结果:前端设定录入后必须点击才能选上,导致最后提交时,报该字段为空
(2)尝试两次点击
先定位到产品名称字段
然后定位下拉选项
两次定位均使用XPath方式,且使用的是Chrome插件 ChroPath
结果:程序报错,报element can not interable 或者 Unable to locate element等错误
尝试加入睡眠时间,未果
(3)两次查找,一次点击
代码如下:
Product_list = browser.find_element_by_xpath("//div[@class='el-input el-input--suffix']//input[@placeholder='请选择产品名称']")
Product_list.find_element_by_xpath('//span[text()="040004 兴业银行2013专户4号"]').click()
结果:仍然报错
(4)尝试自己写Xpath
搜了无数的文章,自己尝试写了无数次
终于解决了,也算是对我即将崩溃的心灵的一次慰藉
说一下成功的这一次的Xpath的编写路径:
打开Xpath Helper,按住Shift,查看我要选择的下拉框所在的块
找到对应div,往下查找特殊的能唯一标识元素位置的节点
最终的Xpath长这样:
//div[@class="el-select-dropdown el-popper"]//ul[@class="el-scrollbar__view el-select-dropdown__list"]/li/span[contains(text(),"040004")]
下图为关键节点的位置示意图:

Bingo,终于完美解决,附上对应代码:
browser.find_element_by_xpath("//div[@class='el-input el-input--suffix']//input[@placeholder='请选择产品名称']").click()
time.sleep(3)
browser.find_element_by_xpath('//div[@class="el-select-dropdown el-popper"]//ul[@class="el-scrollbar__view el-select-dropdown__list"]/li/span[contains(text(),"040004")]').click()
长叹一口气:
只要大方向正确,那就得多尝试、不气馁
加油加油加油!
Python + Selenium 定位非selected型下拉框的方法的更多相关文章
- 第二百二十七节,jQuery EasyUI,ComboTree(树型下拉框)组件
jQuery EasyUI,ComboTree(树型下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解EasyUI中ComboTree(树型下拉框)组件的使用方法,这个 ...
- selenium处理select标签的下拉框
有时候我们会碰到<select></select>标签的下拉框.直接点击下拉框中的选项不一定可行.Selenium专门提供了Select类来处理下拉框. <select ...
- selenium操作隐藏的元素 (下拉框类型)
有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了.例如,下面的情况: Python 页面主要通过“display:none”来控制整个下拉框不可见.这个时候如果直接操 ...
- Selenium实战总结(webwiew下拉框定位)
基于常见的两种下拉框的展示形式: 1.点击弹出下拉框: 2.鼠标移动弹出下拉框(move_to_element) 实例一[鼠标点击弹出的下拉框]: e.g百度首页的设置--高级搜索--时间: 导包: ...
- Selenium: 利用select模块操作下拉框
在利用selenium进行UI自动化测试过程中,经常会遇到下拉框选项,这篇博客,就介绍下如何利用selenium的Select模块来对标准select下拉框进行操作... 首先导入Select模块: ...
- ComboTree( 树型下拉框) 组件
本节课重点了解EasyUI中Tree(树)组件的使用方法, 这个组件依赖于Combo(下拉框)和 Tree(树)组件.一. 加载方式//class 加载方式<select id="cc ...
- MFC下拉框使用方法
Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...
- bootstrap中selectpicker下拉框使用方法实例
最近一直在用bootstrap 的一些东西,写几篇博客记录下.... bootstrap selectpicker是bootstrap里比较简单的一个下拉框的组件,先看效果如下: 附上官网api链接, ...
- selenium测试(Java)--下拉框(二十一)
例子: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...
随机推荐
- 【Linux】【CentOS7】免密登录突然失效
[报错解决]免密登录突然失效 哔哩哔哩 萌狼蓝天 博客:萌狼工作室-博客园 [问题描述] 原本配置好了的免密登录,今天启动hadoop发现免密登录失效了 [解决方案] 1.切换到管理员模式,进入配置文 ...
- RocketMQ架构原理解析(三):消息索引
一.概述 "索引"一种数据结构,帮助我们快速定位.查询数据 前文我们梳理了消息在Commit Log文件的存储过程,讨论了消息的落盘策略,然而仅仅通过Commit Log存储消息是 ...
- 利用Windbg分析Magicodes.IE一次错误编写导致内存剧增
由于这近一年时间一直忙于写书和工作,一直没有水文,但是近期有几位朋友使用我们的Magicodes.IE反馈在导出过程中内存暴涨...好吧,不管怎样,不能苦了我们朋友,接下来我们通过windbg来看一下 ...
- 编译工具grdle部署
目录 一.简介 二.部署 三.测试 一.简介 Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具.在github上,gradle项目很多 ...
- 【划重点】Python xlwt简介和用法
一.导入xlwt包,并初始化创建一个工作簿 import xlwt workbook=xlwt.Workbook() # 初始化创建一个工作簿 二.创建表单 sheet1=workbook.add_s ...
- react原理分析--this.state修改引起的重新渲染
整理向,非原创,目的是整理出浅显易懂的方向性说明. 比如现有 this.state={name:"小明",age:18} 我们说修改组件的状态要用this.setState()来实 ...
- 可恶的Math.random()
生成随机数1-10 (包含1和10) 结果是这样的:Math.floor(Math.random()*10+1) 那么问题又来了 Math.floor(Math.random()*10)生成的只 ...
- 如何完成符合ISO 26262要求的基于模型设计(MBD)的测试
背景介绍 随着汽车行业的迅速发展,汽车的复杂程度不断增加,越来越多的汽车电子控制系统具有与安全相关的功能,因此对ECU的安全要求也越来越高.复杂的软件功能,将会带来大量的软件风险问题,如何保证软件的安 ...
- CF275A Lights Out 题解
Content 有一个 \(3\times 3\) 的矩阵.一开始每个元素都为 \(1\). 你可以对任意的位置进行操作,每次操作将在这个位置上的元素及其上下左右的元素全部由 \(1\) 改为 \(0 ...
- FlashFXP链接到服务器上,如果www目录下的文件隐藏
FlashFXP链接到服务器上,如果www目录下的文件隐藏,那么请按照如下设置,就可以显示隐藏的文件了 [站点]->[站点管理器]->选项,然后按照如下设置: