Xpath定位法

Xpath基本定位语法

表达式

说明

/

绝对定位,从根节点选取

//

相对定位

从匹配选择的当前结点选择文档中的节点,而不考虑它们的位置

.

选取的当前节点

..

选取当前节点的父节点

@

选取属性,@class=”XXX” @id=”XXX”,属性放在中括号[]中

*

通配符。匹配所有.  //  *

@*

通配符。匹配所有属性. // * [@*=“hello”]

 

绝对定位

1:以单斜杠(/)开头

2:从页面根元素(html标签)开始,严格按照元素在html页面中的位置和顺序向下查找

3:单斜杠(/)左边的元素为父元素,右边的元素为直系子元素

缺陷:

1:页面元素一旦发生变化,绝对路径就会失效

2:绝对路径需要一层一层的检索,速度会慢点

相对定位

1:两个斜杠(//)开头表示相对路径

2:不考虑元素在当前页面中的绝对路径和位置

3:考虑页面是否存在符合表达式的元素即可

 

在xpath的相对定位中,不考虑元素的路径和位置,考虑的是如何能够唯一找到这个元素。

所以,需通过元素本身的特征,比如标签名、属性值等,来进行定位,或者考虑元素周边的关系(轴定位表达式)

使用标签名+节点属性定位

语法:

//标签名[@属性名=”值”]

举例:

//a[@name="tj_login" ]

 

组合元素索引(下标)定位

举例:

//li[@class=”1”][2]//img

意思是:

1:先在页面中找到标签名为li的,并且其class属性为1的元素

2:取1中所有的元素中的第二个元素

3:在2中元素的后代元素中,找到标签名为img的元素

 

//li[@class=”course-card-item”][2]//img

也就是说,可以将相对定位的元素并在一起用

通过部分属性值匹配

语法:

//标签名[contains(@属性名,部分属性值)]

举例:

//img[contains(@src,”28551_NVSc_1182.jpg”)]

 

使用文本内容匹配

函数:text()

文本全部匹配:text()=文本内容

文本部分匹配:contains(text(),部分文本内容)

举例:

文本全部匹配://h2[text()=”文本内容”]

文本部分匹配://h2[contains(text(),”部分文本内容”)]

使用轴定位表达式

轴运算名称

Ancestor:祖先结点,包括父

Parent:父节点

Preceding:当前元素节点标签之前的所有节点(html页面先后顺序)

Preceding-sibling:当前元素节点标签之前的所有兄弟结点(同级)

Following:当前元素节点标签之后的所有结点(html页面先后顺序)

Following-sibling:当前元素节点标签之后的所有兄弟结点(同级)

 

使用语法:

轴名称::结点名称

举例:

//a[text()="软件测试之常用工具大集合/Fiddler/httpwatch/saopui/testsoap"]/parent::h4/preceding-sibling::div//span

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

使用小技巧

如何检测你的定位表达式是否正确

谷歌浏览器,按F12键后,在Elements区域,按下ctrl+F,就会弹出一个输入框,在输入框区域中,输入你的定位表达式,按下enter键。在输入框的末尾处,会显示a of n(n:表示当前页面中,匹配此表达式的,一共有多少个元素;a:表示html中黄色背景所在的元素为第几个)

比如:1 of 1,表示一共找到了1个元素,就是当前这个

1 of 5,表示一共找到了5个元素,当前黄色背景的元素为第一个。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值