有一个这样的结构:
<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/