Нет сомнений в том, что это чрезвычайно просто, но для меня это просто не «щелкнет», несмотря на исследования, которые я провел до сих пор.Имеются следующие два примера 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" мешает мне найти второй "div"элемент в примере № 2?