Выберите узел по тексту детей - PullRequest
0 голосов
/ 21 июня 2019

Я хочу выбрать элемент [@class='title'] с XPath

<span class="title">Private Area</span>
<span class="title"><mark>Ablage für Tests</mark></span>
<span class="title">Zweite <mark>Ablage für Tests</mark></span>

Мне нужен один XPath для всех трех примеров, где текст может измениться. Я пытался //*[@class='title'][text()='TEXT'] -> Это работает только для первого примера, но не для других.

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Попробуйте следующий xpath. Просто измените текст, который вы хотите получить.

"//span[@class='title'][contains(.,'" + TEXT + "')]"
1 голос
/ 21 июня 2019

Я собираюсь пойти на:

//span[@class='title']/descendant-or-self::*[text()='SOME TEXT']

Это найдет элемент span, а затем по дереву будет искать элемент с текстовым узлом, который соответствует указанному тексту.

Проблема, с которой вы столкнулись, заключается в том, что в примерах 2 и 3 следующее работает для обоих:

//span[@class='title']/descendant-or-self::*[text()='Ablage für Tests']

Вы можете обойти это с помощью

(//span[@class='title']/descendant-or-self::*[text()='Ablage für Tests'])[1]
(//span[@class='title']/descendant-or-self::*[text()='Ablage für Tests'])[2]

Запомните текстовый узелпринадлежит к определенному элементу, text() не является текстом группы элементов.

Также мне не ясно, какой элемент вы пытаетесь найти. Предположение с вышеизложенным состоит в том, что вам нужен элементкоторый содержит указанный текст.Если вместо этого вы искали элемент span, вы можете изменить XPath на:

//span[@class='title'][descendant-or-self::*[text()='SOME TEXT']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...