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

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

Xpath常用的定位方法

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

相对定位

相对定位是两个杠表示“//”,相对路径易维护
在这里插入图片描述
绝对路径

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

在这里插入图片描述

/html/body/div[1]/section/section/main/div[2]/div[2]/div[1]/div[2]/button[1]/span

last()方法
当标签存在多个相同的时候,可以使用xpath中的last()方法,定位到最后一个
在这里插入图片描述

//标签名[last()]
//span/ul//li[last()]

如果我们要定位到倒数第二个,可以在last() 后面加上 -1,代表倒数第二个
在这里插入图片描述

//标签名[last()-1]
//span/ul//li[last()-1]

属性查找@

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

 //标签名[@元素名称='元素值']
//input[@id='kw']

xpath逻辑表达式-and

当一个元素无法定位到唯一值得时候,我们可以使用and表达式,同一个标签下定位多个元素
在这里插入图片描述


//标签名[@元素名称='元素值' and @元素名称='元素值']
//input[@id='kw' and @class='s_ipt']

xpath表达式-or

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

在这里插入图片描述

// 标签名[@元素名称='元素值' or @元素名称='元素值']
//input[@id='kw' or @class='s_t']

非查找控件

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

//标签名称[@元素名称 != '元素值']
//input[@class!='1111']

Not查找

//标签名[not(.='元素值')
//year[not(.=2005)]
//div[not(@id="tab-AndroidVersions")]

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

模糊匹配

在这里插入图片描述

//标签名[contains(text(), "内容"]
//div[contains(text(), "更新")]

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

精准匹配

在这里插入图片描述

//标签名[(text()='内容')]
//div[(text()='更新文案')]

使用大于小于符号定位

在这里插入图片描述

//div[@class="cell" and text()>'1336']
//div[@class="cell" and text()<'1336']

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

轴方式定位

轴表达式说明

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

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

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

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

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

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

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

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

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

preceding::* :表示当前节点的所有元素
  1. parent:: 当前节点的父节点元素*

在这里插入图片描述

//div[@class="cell" and text()='1338']/parent::*

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

  1. following-sibling::
/bookstore/book[1]/following-sibling::*

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

在这里插入图片描述

//div[3]/table/tbody/tr[1]/td[1]/following-sibling::td[2]

查找td[1]下同级节点下的第二个节点
在这里插入图片描述
3. following-sibling::当前节点的前面所有兄弟节点元素

/bookstore/book[2]/year/preceding-sibling::*

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

在这里插入图片描述

  1. 查找节点的父辈
/bookstore/book[2]/year/parent::*
  1. 查找节点的子辈
/bookstore/book[2]/descendant::*

使用position位置定位

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

//th[@class="c-id " and position()=1]

在这里插入图片描述
也可以//th[@class=”c-id ” and position()<2] 这样用~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 炮轰 杨丰盛的《Android应用开发揭秘》

    炮轰 杨丰盛的《Android应用开发揭秘》看到javaeye很多人在吹嘘、推荐杨丰盛的《Android应用开发揭秘》,个人就买了一本。首先拿到书时,再次感受到机工出版社的书的纸张独有的“薄如蝉翼、黄如粪便”的特征,不过想着javaeye一众人对书中内容的推荐,纸张的质量我忍了。接着看书,不过我慢慢发现书中一堆晦涩不清的表述——这种表述可能是我自己的中文理解问题,算了不说了。但书中还充斥着一堆垃圾代码,看下面书中代码…

    2022年6月8日
    30
  • java将字符串转换为json对象的方法_java jsonobject转string

    java将字符串转换为json对象的方法_java jsonobject转string在与服务器交互的时候,我们往往会使用json字符串,今天的例子是java对象转化为字符串,代码如下protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Persionp1=newPersion(…

    2022年9月21日
    2
  • 二分图匹配相关算法

    二分图匹配相关算法二分图匈牙利算法二分图匈牙利算法二分图匈牙利算法这里简单记录下二分图匹配的相关算法 供自己使用 如果各位游客看到觉得浪费时间 便请移步 文章全为个人模板记录匈牙利算法匈牙利算法研究的是二分图的最大匹配 是对给定的二分图求得最大的满足条件的匹配数 匹配对 其算法思想是利用 Berge 定理和 Hall 定理将初始匹配通过迭代寻找增广路径得到最大匹配 每次迭代得到的匹配大小加 1 具体迭代实现有 DFS

    2025年12月15日
    2
  • 启动eclipse提示java虚拟机无法创建「建议收藏」

    启动eclipse提示java虚拟机无法创建的解决方法:首先在eclipse属性菜单中,进入打开文件位置选项,然后下载新的eclipse.ini文件添加到目录中,最后重启eclipse服务器即可。

    2022年1月16日
    60
  • SQLSTATE各种状态码

    SQLSTATE各种状态码根据 X Open 和 SQLAccessGro 规范 1992 所进行的定义 SQLERROR 返回 SQLSTATE 值 SQLSTATE 值是包含五个字符的字符串 五个字符包含数值或者大写字母 代表各种错误或者警告条件的代码 SQLSTATE 有个层次化的模式 头两个字符标识条件的通常表示错误条件的类别 后三个字符表示在该通用类中的子类 成功的状态是由 0000

    2025年10月12日
    4
  • 一笔画奇点偶点_一笔画图形奇点

    一笔画奇点偶点_一笔画图形奇点由一点引出的百线段为奇数个,则这个点为奇点。由一点引出的线段为偶数个,则这个点为偶点。一个图形判断能否被一笔画下来,关键是看奇点的个数:当奇点为0个或者2个时(不可能为一个,奇点都是成对出现),

    2022年8月4日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号