Подтвердить что ты не робот

Получить текст xpath содержит текст()

Я уже несколько часов разбираюсь в этом часу, и я просто не могу понять это. Использование XPath для поиска текстовых значений сложно, и эта проблема имеет слишком много движущихся частей.

У меня есть веб-страница с большой таблицей, и раздел в этой таблице содержит список пользователей (правопреемников), которые назначены определенному блоку. Для устройства назначается почти всегда несколько пользователей, и мне нужно убедиться, что конкретный пользователь назначен любому из блоков в таблице. Я использовал XPath почти для всех моих селекторов, и я на полпути на этом. Я просто не могу понять, как использовать contains с text() в этом контексте.

Вот что я до сих пор:

//td[@id='unit']/span [text()='asdfasdfasdfasdfasdf (Primary); asdfasdfasdfasdfasdf, asdfasdfasdfasdf; 456, 3456'; testuser]

В XPath Query выше фиксируется весь текст в определенном разделе, на который я смотрю, и это здорово. Однако мне нужно знать только, есть ли в этом разделе testuser.

4b9b3361

Ответ 1

text() получает набор текстовых узлов. Я предпочитаю использовать его больше в контексте //span//text () или что-то в этом роде.

Если вы пытаетесь проверить, содержит ли текст внутри элемента что-то, вы должны использовать contains для элемента, а не результат text(), как это:

span[contains(., 'testuser')]

XPath довольно хорош с контекстом. Если вы точно знаете, какой текст должен иметь текст node:

span[.='full text in this span']

Но если вы хотите сделать что-то вроде регулярных выражений (например, exslt), вам нужно использовать функцию string():

span[regexp:test(string(.), 'testuser')]