xpath 查找前一个元素

标签 xpath

有一个这样的结构:

<div "nothing unique there">
<img "repeating parameters">
<span>
    repeating text
</span>
<span>
    <span>
        <img class="unique name">
    </span>
    <span>
        <strong>Tools</strong>
    </span>
</span>
.
.

我需要使用 XPath 查找 <img "repeating parameters"> 上面代码中唯一独特的部分是 <img class="unique name">

我尝试了这个,但没有成功:

//span/img[@class="unique name"]/preceding-sibling::img

最佳答案

恕我直言,如果您想选择一个img,那么它应该是您的 XPath 的主要部分。那么,让我们开始吧

//img

现在,让我们为该 img 添加条件。似乎有以下 span,所以让我们将其添加为条件:

//img[following-sibling::span]

现在,这不能是任何span。它需要包含另一个 img

//img[following-sibling::span//img]

再说一遍,img 不仅仅是任何 img,它还有一些特殊的属性。让我们将它们作为条件添加到内部 img 中:

//img[following-sibling::span//img[@class="unique name"]]

给你。恕我直言,这是一个很好且易于理解的 XPath。


当然,也可以像您一样首先转到唯一的img

//span/img[@class="unique name"]

然后,不要忘记向外迈出一步:

//span/img[@class="unique name"]/../..

之后您可以移动到前一个同级:

//span/img[@class="unique name"]/../../preceding-sibling::img

关于xpath 查找前一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51884065/

相关文章:

xml - 通过 XPath 提取属性节点的值

xpath - 这是一个有效的 XPath 表达式吗?

C# - XML 子节点到文本框

java - Selenium web自动化,获取特定的HTML元素

xml - xpath://tag [@attr]与//tag [attr]

testing - Selenium 在 XPath 中找不到 SVG 元素

xml - 用于选择多个标签的 XPath

php - 如何从文本节点 xpath 中排除 html 注释?

java - 包含 Xpath 中的函数

testing - xpath 在 tr 中找到两个元素