Найти - Пользователи
Полная версия: Переключение на всплывающее окно Selenium
Начало » Python для новичков » Переключение на всплывающее окно Selenium
1
TorchTT
На странице сайта имеется форма и кнопка.

После заполнения формы и нажатия на кнопку появляется всплывающее окно с еще одной кнопкой. При этом DOM обновляется и в него добавляется код всплывшего окна.

Подскажите, пожалуйста, как при помощи Selenium нажать на кнопку во всплывшем окне?

Забегая вперед, пробовал:

1)
WebDriverWait(driver, 10);
driver.find_element_by_xpath("//div[@id='nameId']/div/div[2]").click();

Вызывает ошибку:
selenium.common.exceptions.NoSuchElementException: Message: 'Unable to locate element: {"method":"xpath","selector":"//div[@id=\'nameId\']/div/div[2]"}'

2)
driver.switch_to_alert();
driver.find_element_by_xpath("//div[@id='nameId']/div/div[2]").click()

Но она создает ошибку:
selenium.common.exceptions.NoSuchElementException: Message: 'Unable to locate element: {"method":"xpath","selector":"//div[@id=\'nameId\']/div/div[2]"}' ;

Если код заменить на:

driver.switch_to_alert();
driver.find_elements_by_xpath("//div[@id='nameId']/div/div[2]").click()

то появляется ошибка:
AttributeError: ‘list’ object has no attribute ‘click’
pyuser
Похоже Вам вот это нужно.
TorchTT
то появляется ошибка:
AttributeError: ‘list’ object has no attribute ‘click’
Это просто Ваша невнимательность, функция, которую Вы вызываете возвращает список.
TorchTT
Вопрос решен.

Всплывающее окно оказалось просто новым элемент в HTML-тэге исходной страницы.

Для обращения к элементу появившегося окна необходимо выполнить (XPath изменен на корректный):

time.sleep(10)
driver.find_element_by_xpath("//div[@class='nameId']/div[@sbisname='Ok']/div").click();
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB