前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Xpath的常用定位方法及轴定位

Xpath的常用定位方法及轴定位

作者头像
全栈程序员站长
发布2022-06-29 15:15:15
1.5K0
发布2022-06-29 15:15:15
举报
文章被收录于专栏:全栈程序员必看

Xpath常用的定位方法

相信做过selenium UI自动化的朋友都知道,工作中大部分的元素定位都是使用xpath进行定位,所以xpath是UI自动化工作中非常重要的一个环节,所以我单独整理出来一篇博客出来~~希望对大家有帮助~

相对定位

相对定位是两个杠表示“//”,相对路径易维护

在这里插入图片描述
在这里插入图片描述

绝对路径

绝对定位用一个杠“/”, 绝对路径一个层级变化所有空间都有变化

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
/html/body/div[1]/section/section/main/div[2]/div[2]/div[1]/div[2]/button[1]/span

last()方法 当标签存在多个相同的时候,可以使用xpath中的last()方法,定位到最后一个

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//标签名[last()]
//span/ul//li[last()]

如果我们要定位到倒数第二个,可以在last() 后面加上 -1,代表倒数第二个

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//标签名[last()-1]
//span/ul//li[last()-1]

属性查找@

如,这里我们以百度为例,如果我们要定位到百度的id元素,那么可以使用 //标签名[@元素名称=‘元素值’]

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
 //标签名[@元素名称='元素值']
//input[@id='kw']

xpath逻辑表达式-and

当一个元素无法定位到唯一值得时候,我们可以使用and表达式,同一个标签下定位多个元素

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//标签名[@元素名称='元素值' and @元素名称='元素值']
//input[@id='kw' and @class='s_ipt']

xpath表达式-or

xpath 中 or的表达式和and很像,指的是当你元素满足其中一个条件的时候,就可以定位到,如图,在百度搜索框中,我们故意将@class=’s_t’元素写错,内容中并没有这个元素,

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
// 标签名[@元素名称='元素值' or @元素名称='元素值']
//input[@id='kw' or @class='s_t']

非查找控件

如图,如果我们想要查找元素值不等于某个值的内容,可以使用!=方法,但是这个方法在工作中用的比较少,目前我还没有用到过,不过xapth提供了这个方法,可以结合场景使用~

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//标签名称[@元素名称 != '元素值']
//input[@class!='1111']

Not查找

代码语言:javascript
复制
//标签名[not(.='元素值')
//year[not(.=2005)]
//div[not(@id="tab-AndroidVersions")]

这里没有找到合适的场景,意思就是查找year内容不为2005的内容 注:“.”就等于text()

模糊匹配

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//标签名[contains(text(), "内容"]
//div[contains(text(), "更新")]

这里的意思是模糊查询内容包含“更新”的元素

精准匹配

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//标签名[(text()='内容')]
//div[(text()='更新文案')]

使用大于小于符号定位

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//div[@class="cell" and text()>'1336']
//div[@class="cell" and text()<'1336']

如图,当我们商品列表中有多个商品ID,那我们想要定位到ID大于或者小于1336的数据,可以通过上面的方式。

轴方式定位

代码语言:javascript
复制
轴表达式说明

parent::* :表示当前节点的父节点元素

ancestor::* :表示当前节点的祖先节点元素

child::* :表示当前节点的子元素 /A/descendant::* 表示A的所有后代元素

self::* :表示当前节点的自身元素

ancestor-or-self::* :表示当前节点的及它的祖先节点元素

descendant-or-self::* :表示当前节点的及它们的后代元素

following-sibling::* :表示当前节点的后序所有兄弟节点元素

preceding-sibling::* :表示当前节点的前面所有兄弟节点元素

following::* :表示当前节点的后序所有元素

preceding::* :表示当前节点的所有元素
  1. parent:: 当前节点的父节点元素*
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//div[@class="cell" and text()='1338']/parent::*

如图,我们要定位到ID为1338元素的父节点元素,可以使用如上xpath轴定位, “*” 表示匹配所有

  1. following-sibling::
代码语言:javascript
复制
/bookstore/book[1]/following-sibling::*

查找books1所有的同级元素都查找出来,“*”表示所有

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
//div[3]/table/tbody/tr[1]/td[1]/following-sibling::td[2]

查找td[1]下同级节点下的第二个节点

在这里插入图片描述
在这里插入图片描述

3. following-sibling::当前节点的前面所有兄弟节点元素

代码语言:javascript
复制
/bookstore/book[2]/year/preceding-sibling::*

意思是:查找books[2]下year前的同级节点

在这里插入图片描述
在这里插入图片描述
  1. 查找节点的父辈
代码语言:javascript
复制
/bookstore/book[2]/year/parent::*
  1. 查找节点的子辈
代码语言:javascript
复制
/bookstore/book[2]/descendant::*

使用position位置定位

意思是定位到th标签下的第一个

代码语言:javascript
复制
//th[@class="c-id " and position()=1]
在这里插入图片描述
在这里插入图片描述

也可以//th[@class=”c-id ” and position()<2] 这样用~

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100697.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档