Почему в Selenium я получаю другой результат, когда я использую ByChained с двумя ByXPath и когда я использую только указатель ByXPath?

#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']