Выбор ответа Middle Локаторы обновлено
Почему не находится кнопка по text()
Вопрос
Разметка: <button><span>Войти</span></button>. Почему //button[text()="Войти"] ничего не находит?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: text() берёт прямые текстовые узлы button, а текст лежит в span. text() выбирает текстовые узлы-дети самого элемента.
Варианты ответа
- XPath ищет по тексту лишь в атрибутах, для содержимого нужен CSS
- Нужно писать
@text, аtext()относится к атрибуту value text()берёт прямые текстовые узлы button, а текст лежит в spanправильный ответ- Кириллица в XPath 1.0 не поддерживается без экранирования
Разбор
text() выбирает текстовые узлы-дети самого элемента. Здесь у button ребёнок span, поэтому прямого текста нет. Решение: //button[normalize-space()="Войти"] или //button[.="Войти"], где берётся строковое значение со всеми потомками. @text это атрибут, его нет. С кириллицей XPath работает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.