前言
查找元素是selenium页面自动化的基础,只有找到元素后才能做相关操作。在一个页面中有很多不同的策略可以定位一个元素。需要选择合适的可维护的方法去查找元素,目前实践后发现xpath定位应用较广,现在的流行自动化神器都离不开xpath元素定位这一技能的学习!下文基本涵盖在实际场景实践中频繁用到的方法:
一、什么是xpath
- xml路径语言,通过元素的路径来查找到这个元素的,相当于通过定位一个对象的坐标,来找到这个对象
- 相对定位,以//开头,不依赖页面的顺序和位置,只看整个页面上有没有这个元素
- 不能唯一定位时,可通过逻辑运算符and/or来组合元素多个属性来定位
二、常用表达式
xpath定位表达式中的常用表达式含义
表达式
描述
/
从根节点开始选取,绝对定位
//
从符合条件元素开始不考虑位置,相对定位
.
选取当前节点
..
选取当前节点的父节点
@
选取属性
三、xpath属性定位
语法://标签名[@属性名=属性值]
- 同一属性名较多的可以通过标签筛选定位更精准,若不想定制可以用*表任意标签
- 可以通过元素的id、name、class常用属性定位,也可以使用其他属性定位到如autocomplete等
例: //a[@id='s-top-loginbtn'] 可定位百度页登录
四、xpath层级定位
如果不能直接定位到目标元素,可以采用"层级定位"方式来定位。
例: .. 选取当前节点的父节点
五、xpath轴定位
语法:轴名称:: 节点名称前后的定位与之前一致,用/隔开即可
比如常用的如下:
轴名称
选择节点
parent
父节点
child
子节点
following
当前元素节点标签之后的所有节点
following-sibling
当前元素节点标签之后的所有兄弟节点(同级)
preceding
当前元素节点标签之前的所有节点
preceding-sibling
当前元素节点标签之前的所有兄弟节点(同级)
例://span[contains(@title,'%s')]//following-sibling::a[contains(text(), '删除')]
六、xpath索引定位
语法://tag[n], tag是需要选择的标签名,n是该元素在同级元素中的索引位置从1开始
当一个元素它的兄弟元素跟它标签一样,无法通过层级定位到时用此方法
索引定位是基于元素在同级元素中的顺序,主要用于处理列表、表格或其他重复元素时使用,如果结构发生变化索引也会变化
例: //select[@id=''nr"]/option[2] 定位到第二个元素
七、xpath逻辑运算
支持多个属性逻辑运算,如与and、或or、非not
例://*[@class='component-title' and text()='列表'] 表示只有class属性是component-title且包含文本内容是列表的元素才能定位到
八、验证xpath定位
F12或F12+Fn键打开浏览器元素页签,复制xpath进去后查看个数若为0则未定位到
版权归原作者 LuckLina 所有, 如有侵权,请联系我们删除。