Задать вопрос
@kelwin27

Как определить элемент TextInputbox с помощью selenium?

При написании кода у меня возникла проблема с определением элементов на странице заполнения формы. 63ad6fe58a5de730296910.png
Статической привязки на данном элементе я не нашел( ближайший элемент имеющий статический ID на скриншоте есть). При обращении по Xpath
text = driver.find_element(By.XPATH, "(//input[@class='Textinput-Control'])[1]")

выдает ошибку:
Message: no such element: Unable to locate element: {"method":"xpath","selector":"(//input[@class='Textinput-Control'])[1]"}
Долее попробовал воспользоваться скриптом:
javaScript = "document.getElementsByClassName('Textinput-Control')[1].value = 'Нашел' "
driver.execute_script(javaScript)

Однако данный вариант выдает ошибку:
"Message: javascript error: Cannot set properties of undefined (setting 'value')".
Насколько я могу судить, исходя из своих скудных знаний, я неправильно определяю данный элемент.
Сам вопрос:
Подскажите пожалуйста способ для определения данного элемента и, если не трудно, направление, где можно почитать про определение подобных элементов страницы.
  • Вопрос задан
  • 148 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Вы пытаетесь найти элемент учитывая его порядок на странице, этот способ имеет недостаток, если вдруг в будущем порядок элементов на странице поменяется, то локатор вернет неверный результат. Лучше воспользоваться тем, что input был обернут в div с классом qa-NameField, из названия можно предположить, что он был добавлен разработчиками по просьбе тестировщика, не пропадет и не изменится в случае дальнейшей доработки формы.

Пример такого локатора выглядит как-то так
//div[contains(@class, "qa-NameField")]//input
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы