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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • bs与cs的区别简述_bs和cs页面

    bs与cs的区别简述_bs和cs页面B/SB/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的,Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查。不依赖用户的电脑操作系统环境,只与浏览器环境有关,当然由于网页复杂性,又延伸出网页前端技术与后端技术,前端技术指的是在浏览器上编程的技术,比如:JS,HTML,CSS,这些前端技术是运行在客户端B

    2022年10月16日
    3
  • kafka 认证和鉴权方式_kafka实际应用

    kafka 认证和鉴权方式_kafka实际应用前言kafka官网关于sasl_scram鉴权Kafka消费端配置创建SCRAMCredentials依赖zk,需要先启动zk,然后在zk中创建存储SCRAM凭证:cdkafkacluster/kafka_2.11-1.1.1bin/kafka-configs.sh–zookeeperzkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka–alter–add-config’SCRAM-SHA-256=[password=admin-secr

    2025年7月4日
    2
  • 无人机视觉定位是怎么回事_drone无人机怎么下APP

    无人机视觉定位是怎么回事_drone无人机怎么下APPhttp://www.aiskyeye.com/2018年已经办过一年了。2019年在ICCV上办。Weencouragetheparticipantstousetheprovidedtrainingdataforeachtask,butalsoallowthemtouseadditionaltrainingdata.Theuseofadd…

    2022年8月15日
    4
  • oracle11g下载地址_如何安装oracle10g数据库

    oracle11g下载地址_如何安装oracle10g数据库OracleDatabase10gRelease2(10.2.0.1.0)Enterprise/StandardEditionforMicrosoftWindows(32-bit)http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.ziphttp://download.ora

    2022年8月30日
    5
  • java之接口[通俗易懂]

    java之接口[通俗易懂]java之接口1、接口的概念2、接口的属性3、接口与抽象类4、静态和私有方法5、默认方法6、解决默认方法冲突7、接口与回调1、接口的概念在java中,接口不是类,而是对符合这个接口的类的一组需求接口用interface声明声明一个Comparable接口可以将接口看成一个没有实例字段的抽象类publicinterfaceComparable{ 声明一个方法,方法的实现由实现这个接口的类来实现方法 接口绝不会有示例字段,在java8以前,在接口中绝对不会实现 方法。 priv

    2022年7月7日
    24
  • Java快速入门

    Java快速入门1Java简介太阳计算机系统(中国)有限公司1982年成立2009年被Oracle收购甲骨文股份有限公司1977年成立2013年成为全球第二大软件公司詹姆斯·高斯林(JamesGosling)Java编程语言的共同创始人之一一般公认他为“Java之父”1.1Java发展史20世纪90年代,出现了单片机。1991年,Sun公司成立了Green项目小组,专攻家电产品上的嵌入式应用,开发出了一种称为Oak的面向对象语言。1992年,Oak语言开发成功后,因为缺

    2022年6月5日
    30

发表回复

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

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