关于Xpath定位方法知道这些基本够用

一、写在前面

之前写过一些关于元素定位的文章,但是感觉都是很碎片,现在想做个整合,便有了这篇文章。

二、xpath的定位方法

关于Xpath定位方法,网上写的已经很成熟了,现已百度首页为例,如下图:

再结合我之前所写整理如下。

1、通过绝对路径方式定位

/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input

2、通过相对路径方式定位

//input

3、通过元素索引定位

//input[4]

4、通过属性定位

使用xpath属性定位(结合第2、第3中方法可以使用)

//input[@id='kw']
//input[@type='name' and @name='kw']

5、通过部分属性值匹配

//input[starts-with(@id,'k')] 
//input[ends-with(@id,'w')] 
//input[contains(@id,'w')]

6、通过文本定位

//a[text()='直播']

三、关于xpath函数使用举例说明

1、contains():

//div[contains(@id,'in')] ,表示选择id中包含有’in’的div节点

2、text()

//a[text()='baidu'] ,用text()函数来匹配节点

3、last()

book[last()] ,取xpath最后一个book元素
book[last()-1] ,取xpath最后第二个book元素

4、starts-with()

//div[starts-with(@id,'in')] ,表示选择以’in’开头的id属性的div节点

5、not()

not()函数,表示否定

//input[@name=‘identity’ and not(contains(@class,‘a’))] ,表示匹配出name为identity并且class的值中不包含a的input节点。

特别注意

not()函数通常与返回值为true or false的函数组合起来用contains(),starts-with()等,但有一种特别情况请注意一下。

我们要匹配出input节点含有id属性的,写法如下://input[@id],如果我们要匹配出input节点不含用id属性的,则为://input[not(@id)]

xpath中的ends-with无效,原因如下:

ends-withxpath2.0的语法,可能你的浏览器还只支持1.0的语法。

posted @   久曲健  阅读(1067)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2018-07-23 关于http客户端常见错误"警告:Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
点击右上角即可分享
微信分享提示