XPath содержит "\ r \ n" не находит элементов на странице - PullRequest
0 голосов
/ 10 декабря 2018

Есть страница с некоторым html:

<ul>
<li>
    <div>
          text1 
    </div>
    <span>
        text2
    </span>
</li>
</ul>

И я хочу найти элемент за текстом в li .Если я пытаюсь найти его с помощью xpath:

"// * [содержит (text (), 'text1')] / ancestor :: li"

  • элемент найден и этот текст равен

"text1 \ r \ ntext2"

Но если я пытаюсь найти его как

[содержит (text (), 'text1 \ r \ ntext2')] / ancestor :: li "

Элементы не найдены. Я пытался использовать @ перед xpathкак: "@ [содержит (text (), 'text1 \ r \ ntext2')] / ancestor :: li"

Но результата тоже нет. Я должен найти элемент со всем текстом. Потому что я неНе знаю, что будет в span и что будет в div. Я не понимаю, почему element.Text = "text1 \ r \ ntext2". Но xpath "[содержит (text (), 'text1 \ r \ ntext2')] "не работает. Есть ли у вас какие-либо предложения или комментарии? Я буду рад видеть это Спасибо

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вы можете использовать normalize-space, я думаю, он подойдет и для вашего случая:

//*[normalize-space(text()='text1 text2')]/ancestor::li 
0 голосов
/ 10 декабря 2018

Вам, вероятно, нужно выполнить подзапрос для li и проверить детей.Таким образом, что-то вроде следующего будет работать для вышеуказанного сценария:

//li[div[contains(text(),'text1')] and span[contains(text(), 'text2')]]

Это будет соответствовать всем li, у которых есть элемент div, содержащий text1, а также элемент span, содержащий text2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...