Selenium Alert Confirm Prompt: автоматизация работы с диалоговыми окнами
В этой статье мы рассмотрим пример использования Selenium для обработки диалоговых окон: Alert, Confirm и Prompt. Этот скрипт демонстрирует, как автоматизировать взаимодействие с различными типами всплывающих окон на веб-страницах, включая их открытие, чтение текста, ввод данных и принятие/отклонение. Такой подход полезен для тестирования интерфейсов, парсинга сайтов с динамическими окнами или автоматизации задач, где требуется взаимодействие с диалоговыми окнами.
Для чего можно использовать этот пример?
Этот код идеально подходит для следующих задач:
- Тестирование интерфейсов: Проверка корректности отображения и функциональности диалоговых окон.
- Автоматизация веб-приложений: Обработка всплывающих окон, таких как подтверждения или формы ввода.
- Парсинг данных: Извлечение текста из диалоговых окон для анализа.
- Обучение Selenium: Понимание работы с различными типами диалоговых окон в веб-автоматизации.
Необходимые инструменты
Для работы скрипта потребуется установить Python и библиотеку Selenium. Selenium позволяет управлять браузером, включая обработку диалоговых окон. Убедитесь, что ChromeDriver установлен и доступен в PATH.
Установка необходимых библиотек.
pip install selenium webdriver-manager
Основные модули и импорты Selenium для Python
Код программы
Ниже приведён полный код с подробными комментариями, который реализует автоматизацию работы с диалоговыми окнами Alert, Confirm и Prompt на примере сайта w3schools.com.
Основной код программы для работы с Selenium
from selenium import webdriver # Импорт библиотеки Selenium для управления браузером
from selenium.webdriver.common.by import By # Модуль для поиска элементов по различным критериям
from selenium.webdriver.support.ui import WebDriverWait # Модуль для явного ожидания загрузки элементов
import time # Импорт модуля time для добавления пауз
# Инициализация драйвера Chrome для взаимодействия с браузером
driver = webdriver.Chrome()
try:
# -----------------------
# 1. Работа с Alert
# -----------------------
# Загрузка страницы с примером Alert
driver.get("https://www.w3schools.com/js/tryit.asp?filename=tryjs_alert")
# Разворачивание окна браузера на полный экран
driver.maximize_window()
time.sleep(2) # Пауза для полной загрузки страницы
# Переключение на фрейм с контентом (страница содержит iframe)
driver.switch_to.frame("iframeResult")
# Поиск и клик по кнопке, вызывающей Alert
driver.find_element(By.TAG_NAME, "button").click()
time.sleep(1) # Пауза для появления Alert
try:
# Ожидание появления Alert (до 5 секунд)
alert = WebDriverWait(driver, 5).until(lambda d: d.switch_to.alert)
# Вывод текста Alert в консоль
print("Alert текст:", alert.text)
time.sleep(2) # Пауза для демонстрации
# Принятие Alert (нажатие OK)
alert.accept()
time.sleep(2) # Пауза после действия
except:
print("Alert не найден или уже закрыт")
# Возврат в основной контент страницы
driver.switch_to.default_content()
time.sleep(2)
# -----------------------
# 2. Работа с Confirm
# -----------------------
# Загрузка страницы с примером Confirm
driver.get("https://www.w3schools.com/js/tryit.asp?filename=tryjs_confirm")
time.sleep(2) # Пауза для загрузки
driver.switch_to.frame("iframeResult")
# Поиск и клик по кнопке, вызывающей Confirm
driver.find_element(By.TAG_NAME, "button").click()
time.sleep(1)
try:
# Ожидание появления Confirm
confirm = WebDriverWait(driver, 5).until(lambda d: d.switch_to.alert)
# Вывод текста Confirm в консоль
print("Confirm текст:", confirm.text)
time.sleep(2)
# Отклонение Confirm (нажатие Cancel)
confirm.dismiss()
time.sleep(2)
except:
print("Confirm не найден или уже закрыт")
driver.switch_to.default_content()
time.sleep(2)
# -----------------------
# 3. Работа с Prompt
# -----------------------
# Загрузка страницы с примером Prompt
driver.get("https://www.w3schools.com/js/tryit.asp?filename=tryjs_prompt")
time.sleep(2)
driver.switch_to.frame("iframeResult")
# Поиск и клик по кнопке, вызывающей Prompt
driver.find_element(By.TAG_NAME, "button").click()
time.sleep(1)
try:
# Ожидание появления Prompt
prompt = WebDriverWait(driver, 5).until(lambda d: d.switch_to.alert)
# Вывод текста Prompt в консоль
print("Prompt текст:", prompt.text)
time.sleep(2)
# Ввод текста в поле Prompt
prompt.send_keys("Обучайтесь парсингу на https://parsertools.ru/")
time.sleep(1)
# Принятие Prompt (нажатие OK)
prompt.accept()
time.sleep(2)
except:
print("Prompt не найден или уже закрыт")
driver.switch_to.default_content()
time.sleep(2)
# Переход на сайт parsertools.ru
driver.get("https://parsertools.ru/")
time.sleep(15) # Пауза для просмотра результата
finally:
# Закрытие браузера и освобождение ресурсов
driver.quit()
print("Скрипт завершён")
Как работает скрипт?
В этом примере скрипт Selenium выполняет следующие действия:
- Инициализация браузера: Запуск Chrome для управления веб-страницами.
- Работа с Alert: Открытие страницы, вызов Alert, чтение текста и принятие (OK).
- Работа с Confirm: Вызов Confirm, чтение текста и отклонение (Cancel).
- Работа с Prompt: Вызов Prompt, ввод текста и принятие.
- Переключение контекста: Работа с iframe и возврат к основному контенту.
- Завершение: Закрытие браузера после выполнения всех действий.
Этот пример полезен для начинающих разработчиков, изучающих автоматизацию веб-приложений. Он демонстрирует, как обрабатывать диалоговые окна Selenium (Alert, Confirm, Prompt), что важно для тестирования и парсинга сайтов с динамическими элементами.
Больше примеров по парсингу на parsertools.ru/primers.
