xpath定位大全

本文详细介绍了XPath在HTML中的应用,包括简介、定位方法如浏览器中的元素选择、绝对与相对路径、索引定位、属性值定位和逻辑运算定位等,强调了相对路径的重要性,并提供了测试地址和实例。

一,Xpath 简介
Xpath 不是 selenium 专用,只是作为一种定位手段,为 selenium 所用。Xpath 是一门在 xml 文档中查找信息的语言。Xpath 可用来在 xml 文档中对元素和属性进行遍历。由于 html 的层次结构与 xml 的层次结构天然一致,所以使用 Xpath 也能够进行 html 元素的定位。

二,Xpath 定位方法
浏览器中如何找到元素
Chrome 浏览器:按 F12,将鼠标点击下图中的图标,再到浏览器页面上选择需要定位的元素,Elements 页中就会自动定位高亮显示页面中的元素。

  1. 绝对路径定位
    顾名思义,将 Xpath 表达式从 html 的最外层节点,逐层填写,最后定位到操作元素
    类似:
//html/body/div/div/div/div/div/form/span[2]/input

这种方法,一旦路径有变化会导致定位失败,所以不推荐使用该方式。
在这里插入图片描述

  1. 相对路径定位
    绝对路径与相对路径的差别与文件系统中的绝对和相对路径类似,相对路径是只给出元素路径的部分信息,在 html 的任意层次中寻找符合条件的元素。
    语句以//开始
//span[2]/input

在这里插入图片描述
3. 索引号定位
(1)索引号定位

//form/span[2]/input # 表示form标签下的第二个span标签

在这里插入图片描述
注意:索引是从1开始
(2)last()-1 是定位到倒数第二个

//li[1]/a/span[last()-1]

在这里插入图片描述
(3)last() 是定位到最后一个

//li[1]/a/span[last()]

在这里插入图片描述
4. 属性值定位

//*[@id="su"]

在这里插入图片描述

//*[@class="btn self-btn bg s_btn"]

在这里插入图片描述

//*[@value="百度一下"]

在这里插入图片描述
5. 逻辑运算定位
(1)与关系

//*[@value="百度一下" and @id="su" and @class="btn self-btn bg s_btn"]

在这里插入图片描述
(2)或关系

//*[@value="百度一下" or @id="su" or @class="btn self-btn bg s_btn"]

在这里插入图片描述
(3)非关系

//form/span[2]/input[not(.=2005)]

在这里插入图片描述
(4)大于小于定位
测试地址:https://www.w3school.com.cn/example/xmle/books.xml
其他的还有

//book[1]/price[text()>25]

在这里插入图片描述

  1. 属性值模糊匹配定位
    模糊匹配的函数有两种:
xpath函数示例含义
starts-with//input[starts-with(@class,“s”)]class属性值以 s 开头的input标签
contains//input[contains(@class,“s_i”)]class属性值包含 s_i 的input标签
//input[starts-with(@id,"s")] # 寻找所有的input标签并且ID属性以s开头

在这里插入图片描述

//input[contains(@value,"百度")] # 寻找所有的input标签,并且value属性包含百度

在这里插入图片描述

  1. 轴定位
    在这里插入图片描述
    轴可定义相对于当前节点的节点集。
轴名称结果
ancestor选取当前节点的所有先辈(父、祖父等)
ancestor-or-self选取当前节点的所有先辈(父、祖父等)以及当前节点本身
attribute选取当前节点的所有属性
child选取当前节点的所有子元素
descendant选取当前节点的所有后代元素(子、孙等)
descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身
following选取文档中当前节点的结束标签之后的所有节点
namespace选取当前节点的所有命名空间节点
parent选取当前节点的父节点
preceding选取文档中当前节点的开始标签之前的所有节点
preceding-sibling选取当前节点之前的所有同级节点
self选取当前节点

在这里插入图片描述
7.1. 查找到ID为 s-top-left 的 div 标签,下面所有的 a 标签的文本(包含 ID 为 s-top-left 的div 的兄弟 div 标签中的 a 标签)

//div[@id="s-top-left"]/descendant::a/text()

在这里插入图片描述

7.2. 查找到ID为 s-top-left 的 div 标签,下面所有的 a 标签的文本(只查找此div标签下面的a标签)

//div[@id="s-top-left"]/child::a

还有其他xpath定位方法,在这里就不列举了,详见代码链接

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西门一刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值