• 2
  • 2
分享
  • 史上最全的xpath定位方法全在这了!——软件测试圈
  • 北极 2022-06-22 17:04:24 字数 2324 阅读 10595 收藏 2

Xpath常用的定位方法

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

相对定位

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

1.png

绝对路径

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

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

last()方法

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

2.png

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

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

3.png

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

属性查找@

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

4.png

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

xpath逻辑表达式-and

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

5.png

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

xpath表达式-or

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

6.png

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

非查找控件

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

7.png

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

Not查找

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

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

模糊匹配

8.png

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

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

精准匹配

9.png

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

使用大于小于符号定位

10.png

//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:: 当前节点的父节点元素*

11.png

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

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

2、following-sibling::

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

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

12副本.png

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

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

13.png

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

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

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

14.png

4、查找节点的父辈

/bookstore/book[2]/year/parent::*

5、查找节点的子辈

/bookstore/book[2]/descendant::*

使用position位置定位

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

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

15.png

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


作者:七月的小尾巴

原文链接:https://blog.csdn.net/weixin_43865008/article/details/115332404

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   如果您的网站在用户访问时的加载时间需要很久,那么,这篇文章兴许能为您的优化工作带来一些启发。不过即便没能帮您解决你的问题,您也能了解到影响了网站加载时间的几种常见错误是什么。  为什么页面加载时间这个指标很重要?  页面的加载时间直接影响到了用户对网站性能的直观感受。有调研数据表示,  一旦页面加载时长超过3秒,那么将会有一半的访问用户在等待中而流失。  · 搜索引擎排名 — 页面加载时间是搜索引擎在搜索结果中对你的网站进行排名的重要依据之一。因此,网页的加载时间会影响用户在Web上查找该网页的难易程度。  · 转化率 — 页面加载越快,用户的参与度就越高。网站速度慢,显而易见地会导致转化...
            0 0 1885
            分享
          •   摘要:软件测试面试中,测试用例是非常容被问到的一个点,今天小编就给大家把最常见的20道测试用例方面的问题给大家整理出来,希望对大家的面试提供帮助。  1、什么是测试用例  答:测试用例的设计就是如何覆盖所有软件表现出来的状态,即在满足输入/输出的一组条件下,软件运行是一系列有次序的、受控制的状态变化过程。  2、设计用例的好处?  答:设计用例的过程可以更深刻的理解需求,熟悉各功能点,保证尽可能全的覆盖到各测试点。也便于用例评审。  3、用例必备4个方面?  答:预置条件、执行步骤、预期结果、测试结果;用例要点:需包括与其他模块耦合关系、用例的级别,考虑哪些需求必须完成,哪些需求可以后续完...
            0 0 1098
            分享
          • 良好的过程产生良好的结果,做好管理,就要管理好整个过程,但是过程管理不仅仅感性,即使通过定性的管理也不够,需要更好的量化管理,正如软件过程成熟度模型TMMI把量化管理放在很高的水平。用数字来反映问题或者成绩,都是比较及时,客观,明确;通过量化管理,才能持续推进测试过程,产品质量等改进。需要测试管理在先,测试活动在后,即先有一套流程、过程跟踪方法等,然后开展测试活动,主动收集数据、分析数据,进行量化管理,不断改进测试流程。测试管理的全局性,指的是不忽视任何一个环节,不轻视任何一个细节。从产品需求文档审查开始到产品发布,基于度量数据的可视化,实施对测试全过程的跟踪和管理,它所涉及的内容非常广泛,其...
            0 0 1402
            分享
          •   App已经渗透到每个人的生活、娱乐、学习、工作当中,APP作为现如今几乎最广泛的应用程序,在所有的移动平台上都有应用,并且以极高的速度增长。但是作为程序而言,出现的时间并不是非常久。很多原有的软件测试流程和思想无法直接套用在APP的测试中,因为和一般的PC端软件相比,APP又具有很多特殊的属性。  例如,传统软件针对不同的平台甚至系统,都会有完全对应的版本,而APP一般对于系统版本并不敏感;其次,APP基本都是轻量化开发,无需复杂的设置或者调试,往往都是傻瓜化安装,上手难度极低;另外,APP的运行环境基本上是以无线连接为主(3/4/5G,WiFi),对于网络连接的速度比较敏感……这些都是和...
            12 12 1122
            分享
      • 51testing软件测试圈微信