UI自动化测试--xpath语法

26 篇文章 0 订阅
4 篇文章 0 订阅


selenium做ui自动化时,需要掌握的基础知识就是元素定位,元素定位有很多做方式,比如id、css选择器,tagname、xpath等。
自己比较喜欢用xpath的方式,总结一下如何通过xpath进行元素定位

环境和工具说明

验证环境:百度首页
xpath:2.0版本
工具:chrome的F12 ->elements中查询写好的xpath,显示匹配的元素,如图所示
chrome中验证方法

基础语法

表达式描述
/从根节点选取,绝对路径
//从选择的当前节点选择,相对路径
.选择当前节点
. .选择父节点
@选择属性

常用的使用实例

选择有某属性的节点

eg:选择有target属性的a元素

//a[@target]      

或者

//a/attribute::target   

选择不包含某属性的节点

eg: 选择没有type属性的input标签

//input[not(@type)]   

选择包含某属性,并且属性值是等于情况的节点

eg:选择target属性值是_blank的a元素

//a[@target='_blank']     

或者(target属性值只有一个时这两个方法通用,但有多个值时,下面这种方法匹配的结果比上面这种方法多)

//a[contains(@target,'_blank')]   

选择包含某属性,并且属性值是包含情况的节点

eg:选择target属性值包含_blank的的a元素

//a[contains(@target,'_blank')]    

选择不包含某属性是某个值的情况

eg:选择target属性值不包含_blank的的a元素

//a[not(contains(@target,'_blank'))]    

选择某元素下指定元素的第n个节点

eg:选择form标签下第一个input标签

//form/input[1]   

或者

//form/input[position()=1]

eg:选择form标签下第三个input标签

//form/input[position()=3] 

选择某元素下指定元素的最后一个节点

eg:选择form标签下最后一个input标签

//form/input[last()]     

选择某元素下指定元素的倒数第二一个节点

eg:选择form标签下倒数第二个input标签

//form/input[last()-1]   

选择某元素下指定元素的前n个节点

eg:选择form标签下前两个inpu标签

//form/input[position()<3]   

选择以什么开头的节点(starts-with),使用方法和contains一样

eg:选择以百度开头的a标签

//a[starts-with(.,'百度')] 

选择以什么结尾的节点(ends-with),使用方法和contains一样(验证时不能定位到元素,有说是不支持2.0的语法

eg:选择以百度结尾的a标签

//a[ends-with(.,'百度')]

多个属性取和

eg:选择from标签下,type属性值为hidden,name属性值是ie的input标签

//form/input[@type='hidden' and @name='ie']

多个属性取或

eg:选择from标签下,name属性值为f或者ie的input标签

//form/input[@name='f' or @name='ie']

选择属性值大于多少的节点

eg:选择ul标签下,data-index属性值大于3的li标签

//ul/li[@data-index>3]

选取当前节点之前的所有同级节点

eg:选择value属性值是baidu的input标签的同级input标签

//input[@value='baidu']/preceding-sibling::input

选取当前节点的开始标签之前的所有节点。

eg:选择value属性值是baidu的input标签之前的所有input标签

//input[@value='baidu']/preceding::input

区别:preceding-sibling只能查询同级的,preceding可以查询出同级节点的子节点
如图preceding-sibling匹配结果
preceding匹配结果

选择相邻节点的前一位

eg:选择value属性值是baidu的input标签相邻的前一位input标签

//input[@value='baidu']/preceding-sibling::input[1]

选择相邻节点的后一位

eg:选择value属性值是baidu的input标签相邻的后一位input标签

//input[@value='baidu']/following-sibling::input[1]

选择相邻节点的前N位/后N位

选择value属性值是baidu的input标签相邻的前(后)N位input标签

//input[@value='baidu']/following-sibling::input[N]

更详细,更多的用法,详见参考地址:https://www.w3school.com.cn/xpath/xpath_syntax.asp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值