selenium元素定位xpath的几种高级定位方法

xpath无疑是UI自动化使用最多的定位方式,但做过UI自动化的同学都知道,代码调试出现最多的问题就是NoSuchElement。
在这里插入图片描述
例如,当你要点击上图列表,还在使用右键-检查-copy xpath的方式吗?

当然,这样是可行的。但如果列表顺序变动,比如新增了菜单或权限不同时,相对位置发生变动,你所copy的xpath便失效,则需要重新维护代码。

对于<a>标签,selenium提供了两种根据文字的便捷定位方法:find_element_by_link_text 和 by_partial_link_text
但只对<a>标签有效。

而xpath也包含三中类似的便捷定位方法:text(), contains, starts-with

text()是一个宝藏方法,其强大、暴力、无脑、简便…可根据可见文字直接定位元素。

例如,//*[text()=“添加”],直接定位页面上的添加按钮。甭管是什么标签,什么<li><botton><div>的,上来直接//*无脑找元素。
在这里插入图片描述
当然也有一些特殊情况。比如,我要定位一个如上图的菜单,但它显示的数字是实时变化的。

这时还可以结合contains定位,即包含,可理解为类似"%A%"的模糊匹配。

但此时筛选出了11个符合条件的元素,结果不唯一。

那么可以再添加一个class属性为条件,因为其他符合条件的元素都不具有class属性。
在这里插入图片描述

在这里插入图片描述
这里又是一个偷懒小技巧:[@class]找出只要有class属性的元素就可以,不必写值是什么,那不重要。

同理,还有一种starts-with方法,也是类似的效果:
在这里插入图片描述
匹配以某些字符开头的元素,可以理解为类似于"A%"的模糊匹配。

因此,一味无脑的copy xpath虽然开始编码时可能方便一点,但代码繁琐,且极不稳定,也不易理解。

是时候去升级你的自动化代码了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值