Для элемента span подойдет //span[contains(normalize-space(.), 'Привет')]. Если совпадений несколько, ограничьте контейнер или добавьте устойчивый атрибут. Такой XPath выбирает элемент, содержащий подстроку, а не отдельный фрагмент текстового узла. Contains не проверяет границы слова: совпадет и «Приветствие».
Как найти элемент по части текста, например «Привет» в строке «Привет, Геннадий»?
Пример XPath для конкретного span с поиском подстроки, нормализацией пробелов и пояснением различий между элементом, текстом и отдельным словом.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала нужно посмотреть реальную разметку: слово само по себе не обязательно является отдельным элементом. Для учебного примера предположим такой HTML:
<span data-testid="greeting">Привет, Геннадий</span>
Конкретный элемент можно найти XPath-выражением:
//span[@data-testid='greeting' and contains(normalize-space(.), 'Привет')]
Если устойчивого атрибута нет и подходящий span единственный в нужной области, достаточно //span[contains(normalize-space(.), 'Привет')]. Название тега в обоих случаях должно соответствовать реальной странице; data-testid здесь тоже является условием примера, а не фактом об исходном приложении.
contains проверяет наличие подстроки. normalize-space убирает начальные и конечные пробельные символы и сводит их последовательности к одному пробелу по правилам XPath. Точка обозначает текущий элемент; при преобразовании в строку учитывается текст его потомков. Семантика функций описана в спецификации XPath 1.0.
Это локатор элемента, а не выделение букв «Привет» внутри текстового узла. Он также не проверяет отдельное слово: строка «Приветствие» подойдет. Если важны границы слова, нужно отдельно определить правила для пунктуации и пробелов и выбрать соответствующую проверку текста.
Не начинайте с поиска по всем элементам документа: текст потомков может привести к совпадениям с крупными контейнерами и предками. Ограничивайте поиск конкретным компонентом и проверяйте число найденных элементов. В автотесте также разделяйте нахождение элемента, ожидание его нужного состояния и утверждение о тексте: успешный поиск сам по себе не подтверждает правильность всего сообщения.