Selenium-Xpath定位

Xpath(XML Path Language) 是一门在XML文档中查找信息的语言,可用来在XML文档中对元素和属性进行遍历。使用Xpath定位HTML中元素的位置,主要是基于元素的树形结构。

Xpath表达式学习
基本表达式
表达式描述
nodename选取此节点下的所有子节点
/从根节点开始选取,绝对定位
//从符合条件的元素开始,而不考虑他们的位置。相对定位
.选取当前节点
..选取当前节点的父节点
@选取属性
谓语表达式

谓语用来查找某个特定的节点或包含某个指定值的节点。

路径表达式描述
//body/div[1]选取所有body子元素的第一个div元素
//body/div[last()]选取所有body子元素的最后一个div元素
//body/div[last()-1]选取所有body子元素的倒数第二个div元素
//body/div[position()<3]选取所有body子元素中最前面的两个div元素
//div[@class]选取所有拥有名为class的属性的div元素
//div[@class = 'salaxy-layout']选取所有用于名为class,值为salaxy-layout的元素
通配符
通配符描述
*匹配任何元素的节点
@匹配任何属性节点
轴定位

轴定位,使用::表示

轴名称描述
ancestor选取当前节点的所有先辈(父,祖父等)
cancestor-or-self选取当前节点的所有先辈(父、祖父等)以及当前节点本身
attribute选取当前节点的所有属性
child选取当前节点的所有子元素
descendant选取当前节点的所有后代元素(子、孙等)
descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身
following选取当前节点之后的所有节点
parent选取当前节点的父节点
preceding-sibling选取当前节点之前的所有兄弟节点
following-sibling选取当前节点之后的所有兄弟节点
self当前节点
常用定位方式:

1、元素属性,快速定位,唯一属性:

//*[@id="images"]

但是很多项目,前端在进行编写时为设置唯一属性。

2、层级与属性结合,解决没有属性问题:

//div[@id="images"]/a[1]

3、定位时,可以添加其标签内的文本,便于知晓其含义:

//button/span[contains(text(),'添加策略')]

4、查找id属性的值包含”kw“的元素:

//*[contains(@id,'kw')]

5、查找文本里包含”新闻“的元素

//*[contains(text(),'新闻')]

6、使用多个相对路径去定位一个元素用 //分开:

//div[@class=‘formgroup’]//input[@id=‘user-message’]

快速得出Xpath路径

目前,主流的浏览器都提供了复制元素Xpath的功能,如下所示:

//*[@id="add"]/div/section/div[2]/div[1]/div[4]/div/div[1]/div[3]/div[1]/div

浏览器提供的xpath路径层级较多,若其层级中的某个div的路径变化则会导致定位失败。故,在定位某个节点时,需要尽量将xpath路径缩短,提高通用性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值