我最近遇到了一个问题。
我需要在页面上找到一个div标签,它包含特定的文本。问题是,文本被内部链接标记分为两个部分,因此HTML树看起来如下所示:
**<html>
<...>
<div>
start of div text - part 1
<a/>
end of div text - part 2
</div>
<...>
</html>**
为了唯一地标识那个div标记,我需要div文本的两个部分。很自然地,我会想出类似这样的XPath:
.//div[contains(text(), 'start of div text') and contains(text(), 'end of div text')]
但是,它不工作,第二部分找不到。
什么是唯一描述这类标签的最佳方法?
发布于 2018-08-21 00:23:04
尝试使用下面的XPath通过两个文本节点匹配所需的div
:
//div[normalize-space(text())="start of div text - part 1" and normalize-space(text()[2])="end of div text - part 2"]
发布于 2018-08-21 00:01:53
这应该是可行的:
//div[contains(text(), 'start of div text') and contains(./a/text(), 'end of div text')]
发布于 2018-08-21 00:02:34
如果你有这样的HTML DOM树:
<div id="container" class="someclass">
<div>
start of div text - part 1
<a/>
end of div text - part 2
</div>
</div>
为了提取div文本,可以这样编写xpath:
//div[@id='container']/child::div
附注:基于文本编写Xpath以查找完全相同的文本不是编写xpath的好方法。
https://stackoverflow.com/questions/51934274
复制相似问题