Python webdriver для обработки всплывающих окон браузера, который не является предупреждением
48828 просмотра
2 ответа
Я работаю над веб-приложением, в котором при нажатии на ссылку появляется другое всплывающее окно. Всплывающие окна - это не предупреждение, а форма с различными полями, которые нужно ввести пользователю и нажать «Далее».
Как я могу обрабатывать / автоматизировать это всплывающие окна с помощью селена.
Резюме :-
- Нажмите на гиперссылку (URL) - "НАЖМИТЕ ЗДЕСЬ"
- Форма регистрации пользователя отображается в виде всплывающего окна.
- Данные должны быть заполнены пользователем
- Нажмите кнопку Далее / Отправить.
- Другая следующая перенаправлена на другую страницу / форму «Страница личной информации пользователя»
- Личная информация должна быть заполнена пользователем
- Нажмите «Далее / Отправить»
- Всплывающее окно исчезло.
- Теперь дальнейшая обработка на оригинальной / базовой странице.
Ответы (2)
39 плюса
Переключение на всплывающее окно является сложной задачей, по крайней мере, по двум отдельным причинам:
- Многие знают о том, что вам нужно использовать
driver.switch_to.window(window_handle)
как при появлении всплывающего окна, так что вы можете найти элементы во всплывающем окне, так и после закрытия всплывающего окна, чтобы вы могли найти элементы обратно в главном окне. - Тот, с которым могут столкнуться только люди с медленными машинами, это то, что когда Selenium делает дескриптор окна доступным в качестве переменной, он изначально имеет значение None и занимает некоторое время, прежде чем он заполняется значением.
Вот некоторый код, который решает эти проблемы при выполнении запрошенной последовательности. Я опускаю import
утверждения и использую имена переменных, которые, я надеюсь, очевидны. Также обратите внимание, что мне нравится использовать find_element(s)_by_xpath
в моем коде; не стесняйтесь использовать другие find_element(s)_by
методы:
main_window_handle = None
while not main_window_handle:
main_window_handle = driver.current_window_handle
driver.find_element_by_xpath(u'//a[text()="click here"]').click()
signin_window_handle = None
while not signin_window_handle:
for handle in driver.window_handles:
if handle != main_window_handle:
signin_window_handle = handle
break
driver.switch_to.window(signin_window_handle)
driver.find_element_by_xpath(u'//input[@id="id_1"]').send_keys(user_text_1)
driver.find_element_by_xpath(u'//input[@value="OK"]').click()
driver.find_element_by_xpath(u'//input[@id="id_2"]').send_keys(user_text_2)
driver.find_element_by_xpath(u'//input[@value="OK"]').click()
driver.switch_to.window(main_window_handle) #or driver.switch_to_default_content()
Пожалуйста, дайте мне знать, если кому-то (может быть, мне) нужно добавить больше в пример или предоставить другую информацию, чтобы сделать его более понятным.
Автор: Lindsay Размещён: 14.03.2015 06:256 плюса
Если это новый window
или, iframe
вы должны использовать driver.switch_to_frame(webelement)
или driver.switch_to_window(window_name)
. Это должно позволить вам взаимодействовать с elements
всплывающим окном. После того как вы закончили, вы должны driver.switch_to_default_content()
вернуться на главную страницу.
Вопросы из категории :
- python Обработка XML в Python
- python Как я могу использовать Python itertools.groupby ()?
- python Python: На какой ОС я работаю?
- python Как я могу создать непосредственно исполняемое кроссплатформенное приложение с графическим интерфейсом на Python?
- python Вызов функции модуля с использованием его имени (строки)
- python Звук Питона («Колокол»)
- selenium Есть ли способ одновременно запускать тесты Bamboo?
- selenium Selenium xpath flow
- selenium Доступ к диалоговому окну загрузки файлов в Firefox
- selenium Как отключить Javascript при использовании Selenium?
- selenium Можно ли спрятать браузер в Selenium RC?
- selenium Ввод Enter / Return ключ в Селен
- webdriver Как проверить, является ли элемент видимым с помощью WebDriver
- webdriver Лучший способ сделать скриншоты тестов в Selenium 2?
- webdriver Как Webdriver / Selenium «общается» с вашим локальным веб-браузером?
- webdriver Как выбрать опцию из выпадающего списка, используя Selenium WebDriver C #?
- webdriver Как скрыть окно Firefox (Selenium WebDriver)?
- webdriver Разница между webdriver.get () и webdriver.navigate ()