#selenium #selenium-webdriver #xpath
#selenium #selenium-webdriver #xpath — путь
Вопрос:
Я не знаю, почему я получаю определенный элемент при использовании By .Chained.
У меня есть следующий HTML:
Когда я использую locator
By.XPath("//*[text()='End date']/..//input[@type='text']")
Я получаю второе поле ввода, как и ожидалось:
Но, когда я использую locator
By.Chained([By.XPath: //*[text()='End date']/..,By.XPath: //input[@type='text']])
Я получаю первое поле ввода:
Почему это происходит?
Комментарии:
1. Какое искусство привязки Selenium ?
Ответ №1:
Ваше второе выражение (как и все, начинающиеся с /
) — это абсолютный путь к местоположению. Если это By.Chained
применяет каждый результат из первого выражения в качестве контекста для второго, вам понадобится относительное выражение, например:
.//input[@type='text']
Или более понятный:
descendant::input[@type='text']