【发布时间】:2019-04-15 13:56:08
【问题描述】:
毫无疑问,这是非常基本的,但它对我来说不会“点击”,尽管到目前为止我已经进行了研究。给定以下两个 HTML 示例:
示例 1
<div _ngcontent-c35="" class="row facet-container ng-star-inserted">
<div _ngcontent-c35="" class="searchresult-header">
Locatie
</div>
</div>
示例 2
<div _ngcontent-c42="" class="row facet-panel ng-star-inserted">
<div _ngcontent-c42="" class="facet-panel-header brand-pointer" data-target="#ft5" data-toggle="collapse">
<span _ngcontent-c42="" class="icon-plus ng-star-inserted" data-target="#ft5" data-toggle="collapse">
</span>
Locatie
</div>
<div _ngcontent-c42="" class="collapse" id="ft5">
</div>
</div>
现在我有了以下 xpath:
//div[.//div[normalize-space(text())='Locatie']]
根据其他questions 和有关xpath 的网站,text() 选择直接从我们正在搜索的节点下降的文本节点。因此,在示例 #1 中,我希望检索第一个子“div”元素。这是正确的:没有问题。
我希望示例 #2 中的结果相同。然而,情况并非如此:显然“span”元素破坏了这个特定的搜索。当我手动删除它时,我成功检索了所需的“div”元素。为什么搜索会中断?文本仍然应该是 div 元素的直接子元素,无论 span 元素是否存在。
TLDR:为什么“span”元素会阻止我在示例 #2 中找到第二个“div”元素?
【问题讨论】: