你能帮我做一个类似html结构的xpath吗


<div>
<div>
<div>
<h1 >text1<h1>
<div>
<div>
<div>
<div>
<p> some text <p>

我想要<h1>text1<h1>后面的<p>some text<p>的XPath

根据您对结构的了解程度,您可以使XPath更加具体,如果您需要担心空白,请决定是否可以使用=或应该使用contains(),或者在比较之前使用normalize-space()规范化空白。

但是,首先识别h1元素,然后使用following::轴以p:为目标

//h1[. = "text1"]//following::p[contains(text(), "some text")]

不完全清楚OP显示的div是否在同一级别,但当它们在同一个级别时,并且您不想依赖于嵌套div的数量,您可以使用:

//div[.//h1[contains(text(),'text1')]]/following-sibling::div//p[contains(.,'some text')]

如果您可以依赖于嵌套div的数量,那么下面的XPath肯定会执行更好的

//div[div/div/h1[contains(text(),'text1')]]/following-sibling::div/div/div/div/p[contains(.,'some text')]

如果;一些文本";是唯一的,您可以简单地使用以下XPath

//p[contains(text(),'some text')]

//*[contains(text(),'some text')]

//p[text()='some text']

//*[text()='some text']

如果您想在text1的基础上编写some text的Xpath。

Xpath:

//h1[contains(text(),'text1')]/following-sibling::h1/descendant::p[last()]/preceding-sibling::p

阅读更多关于xpath轴在这里

这将是上面p标记的xpath包含"一些文本";

//div//div//div//div//p

最新更新