Почему Selenium не находит элемент по имени?(Python, Firefox) - PullRequest
0 голосов
/ 13 марта 2019

У меня есть следующий HTML

<button name="_eventId_confirmed" class="btn btn-green margin-bottom-20 bold medium" autofocus="">

и следующий Python

btn = driver.find_element_by_name('_eventId_confirmed')

Запуск этого кода возвращает ошибку

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [name="_eventId_confirmed"]

Непосредственно перед этой нерабочей комбинацией HTML / кода у меня есть следующий элемент HTML:

<input name="registration" id="registration" class="size-28" maxlength="7" autofocus="" autocomplete="off" type="text" data-original-title="" title="" style="">

, к которому я успешно получаю доступ

elem = driver.find_element_by_name("registration")

Почему работает второй, а не первый?

Редактировать: проблема была в том, что открылось новое окно, и мне нужно было переключить обработчик окна. Итак, ложная тревога. Спасибо всем.

Ответы [ 3 ]

1 голос
/ 13 марта 2019

Это может быть из-за модального диалога, как вы упомянули в комментарии. Попробуйте

driver.switchTo().frame("ModalFrameTitle");

или

driver.switchTo().activeElement()
1 голос
/ 13 марта 2019

Вы можете сделать это, используя window_handles и метод switch_to_window.

Перед нажатием кнопки дескриптор окна отображается как

window_before = driver.window_handles[0]

elem = driver.find_element_by_name("registration")

после нажатия кнопки дескриптор окна вновь открытого окнакак

window_after = driver.window_handles[1]

, затем выполните переключение на метод окна, чтобы перейти к вновь открытому окну

driver.switch_to.window(window_after)

driver.find_element_by_name("_eventId_confirmed").click()

Надеюсь, что эта помощь.

1 голос
/ 13 марта 2019

«Имя тега» не совпадает с «именем».Первый относится к имени тега HTML-элемента, а последний относится к атрибуту «name» HTML-элемента.

Например, в вашем первом HTML-фрагменте

<button name="_eventId_confirmed" class="btn btn-green margin-bottom-20 bold medium" autofocus="">

button - это имя тега, а _eventId_confirmed - это (атрибут) имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...