Получить текст xpath содержит текст()
Я уже несколько часов разбираюсь в этом часу, и я просто не могу понять это. Использование XPath для поиска текстовых значений сложно, и эта проблема имеет слишком много движущихся частей.
У меня есть веб-страница с большой таблицей, и раздел в этой таблице содержит список пользователей (правопреемников), которые назначены определенному блоку. Для устройства назначается почти всегда несколько пользователей, и мне нужно убедиться, что конкретный пользователь назначен любому из блоков в таблице. Я использовал XPath почти для всех моих селекторов, и я на полпути на этом. Я просто не могу понять, как использовать contains
с text()
в этом контексте.
Вот что я до сих пор:
//td[@id='unit']/span [text()='asdfasdfasdfasdfasdf (Primary); asdfasdfasdfasdfasdf, asdfasdfasdfasdf; 456, 3456'; testuser]
В XPath Query выше фиксируется весь текст в определенном разделе, на который я смотрю, и это здорово. Однако мне нужно знать только, есть ли в этом разделе testuser.
Ответы
Ответ 1
text()
получает набор текстовых узлов. Я предпочитаю использовать его больше в контексте //span//text () или что-то в этом роде.
Если вы пытаетесь проверить, содержит ли текст внутри элемента что-то, вы должны использовать contains
для элемента, а не результат text()
, как это:
span[contains(., 'testuser')]
XPath довольно хорош с контекстом. Если вы точно знаете, какой текст должен иметь текст node:
span[.='full text in this span']
Но если вы хотите сделать что-то вроде регулярных выражений (например, exslt), вам нужно использовать функцию string():
span[regexp:test(string(.), 'testuser')]