Как обрабатывать оповещения и всплывающие окна в Selenium?
⚡ Умное резюме
Оповещения и всплывающие окна в Selenium JavaДиалоговые окна сценариев и дочерние окна, блокирующие поток автоматизации. В этой статье объясняется, как распознавать простые, всплывающие и подтверждающие уведомления, переключаться на них с помощью WebDriver и управлять несколькими окнами с помощью функции getWindowHandles().

Что такое оповещение в Selenium?
An Оповещение в Selenium небольшой JavaДиалоговое окно сценария, которое появляется на экране, чтобы предоставить пользователю информацию или уведомление. Оно может подтвердить определенное действие, запросить разрешение на выполнение операции или отобразить предупреждающее сообщение.
В этом уроке вы узнаете, как обрабатывать всплывающие окна. Selenium а также различные типы оповещений, встречающиеся в веб-приложениях. тестовМы также рассмотрим, как обрабатывать оповещения в Selenium WebDriver и способы принятия или отклонения запроса в зависимости от типа оповещения.
Типы оповещений в Selenium
JavaСкрипт отображает три диалоговых окна с предупреждениями, которые Selenium нужно поступить иначе.
1) Simple Alert
Простое оповещение отображает информацию или предупреждение на экране. Пользователь может подтвердить его только нажатием кнопки. OK.
2) Prompt Alert
В появившемся всплывающем окне пользователю предлагается ввести данные. Selenium WebDriver может вводить в него данные, используя sendKeys("input...").
3) Confirmation Alert
Подтверждающее уведомление предлагает пользователю одобрить или отменить операцию. Оно отображает оба варианта. OK и Отмена кнопки.
Как обработать оповещение в Selenium Вебдрайвер
Alert интерфейс в Selenium Вебдрайвер Предоставляет четыре метода, охватывающих все взаимодействия с оповещениями.
- аннулирование увольнения() — щелкает Отмена .
driver.switchTo().alert().dismiss();
- недействительный акцепт() — щелкает OK .
driver.switchTo().alert().accept();
- Строка getText() — перехватывает сообщение об ошибке.
driver.switchTo().alert().getText();
- void sendKeys (String stringToSend) — вводит текст в всплывающее окно.
driver.switchTo().alert().sendKeys("Text");
Eclipse Функция автозаполнения отображает доступные методы оповещения после ввода текста.ping alert. в строке редактора. Переключайтесь из главного окна в окно оповещения в любое время, используя SeleniumАвтора .переключить на() метод.
Пример решения: Удаление демо-записи клиента
Давайте автоматизируем следующий сценарий. Мы будем использовать Guru99 демонстрационных сайтов для иллюстрации Selenium Обработка оповещений.
Шаг 1) Запустите браузер и откройте https://demo.guru99.com/test/delete_customer.php.
Шаг 2) Введите любой идентификатор клиента.
Шаг 3) Нажмите Отправить .
Шаг 4) Примите или отклоните появившееся подтверждающее уведомление.
Selenium Java Code: Ручка Confirmation Alert
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.Alert;
public class AlertDemo {
public static void main(String[] args) throws NoAlertPresentException, InterruptedException {
// Selenium 4 ships Selenium Manager, so an explicit driver path is no longer required.
WebDriver driver = new ChromeDriver();
// Open the Delete Customer demo page
driver.get("https://demo.guru99.com/test/delete_customer.php");
driver.findElement(By.name("cusid")).sendKeys("53920");
driver.findElement(By.name("submit")).submit();
// Switch to the confirmation alert
Alert alert = driver.switchTo().alert();
// Capture the alert message
String alertMessage = alert.getText();
System.out.println(alertMessage);
Thread.sleep(5000);
// Accept the alert
alert.accept();
driver.quit();
}
}
Выход: Браузер открывает страницу «Удалить клиента», вводит идентификатор клиента, принимает подтверждающее сообщение и удаляет запись из демонстрационного приложения.
Как обрабатывать всплывающие окна Windows in Selenium Вебдрайвер
Когда автоматизация должна работать в нескольких окнах браузера, тест должен переключать фокус между ними и возвращаться к родительскому окну после каждой операции. Selenium WebDriver предоставляет два метода, которые делают это возможным.
driver.getWindowHandles()
Возвращает Set<String> для каждого открытого окна. Пройдитесь по набору, чтобы переключиться с главного окна на любое дочернее окно в приложении.
драйвер.getWindowHandle()
Возвращает String с уникальным идентификатором текущего окна. Зафиксируйте его перед открытием любого дочернего окна, чтобы позже вернуться к родительскому окну.
Выполните следующие шаги, чтобы продемонстрировать обработку окон. Guru99 всплывающих демонстраций.
Пример решения задачи: переключение окон
Шаг 1) Запустите браузер и откройте https://demo.guru99.com/popup.php.
Шаг 2) Нажмите Кликните сюда ссылка. Открывается новое дочернее окно.
Шаг 3) В дочернем окне пользователю предлагается ввести адрес электронной почты и отправить запрос.
Шаг 4) Введите адрес электронной почты и отправьте.
Шаг 5) На странице отображаются учетные данные доступа, полученные в результате демонстрации.
После отображения учетных данных:
- Закройте дочернее окно.
- Верните фокус обратно на родительское окно.
Selenium Java CodeОбработка нескольких Windows
import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class WindowHandle_Demo {
public static void main(String[] args) throws InterruptedException {
// Selenium 4 auto-resolves the browser driver via Selenium Manager
WebDriver driver = new FirefoxDriver();
driver.get("https://demo.guru99.com/popup.php");
driver.manage().window().maximize();
driver.findElement(By.xpath("//*[contains(@href,'popup.php')]")).click();
String mainWindow = driver.getWindowHandle();
// Capture every open window handle
Set<String> allWindows = driver.getWindowHandles();
Iterator<String> iterator = allWindows.iterator();
while (iterator.hasNext()) {
String childWindow = iterator.next();
if (!mainWindow.equalsIgnoreCase(childWindow)) {
// Switch to the child window
driver.switchTo().window(childWindow);
driver.findElement(By.name("emailid")).sendKeys("gaurav.3n@gmail.com");
driver.findElement(By.name("btnLogin")).click();
// Close the child window
driver.close();
}
}
// Return focus to the main window
driver.switchTo().window(mainWindow);
driver.quit();
}
}
Выход: Сайт запущен, Открыть ссылка открывает дочернюю вкладку, Selenium вводит адрес электронной почты и отправляет, закрывает дочернее окно и возвращается к родительскому.
Заключение
- Определил три Selenium Типы оповещений — простое, всплывающее и подтверждающее — с подробным скриншотом для каждого.
- Демонстрация обработки оповещений с помощью WebDriver.
Alertинтерфейс с использованием работающего сценария удаления клиента. - Обрабатывал несколько окон браузера, захватывая дескрипторы с помощью
getWindowHandle()иgetWindowHandles()и переключаясь между ними.















