Как обрабатывать оповещения и всплывающие окна в Selenium?

⚡ Умное резюме

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

  • 🔔 Основное определение: A Selenium оповещение — это JavaДиалоговое окно скрипта отображается над страницей и должно быть обработано перед выполнением дальнейших действий.
  • 🇧🇷 Три типа оповещений: Для простых запросов (информация), запросов (ввод текста) и подтверждений (да/нет) требуются разные вызовы WebDriver.
  • 🇧🇷 API оповещений: Для взаимодействия с диалоговым окном используйте driver.switchTo().alert() с функциями accept(), dismiss(), getText() и sendKeys().
  • 🪟 Управление окнами: Метод getWindowHandle() возвращает идентификатор текущего окна; метод getWindowHandles() возвращает полный набор для переключения.
  • 🚀 Selenium 4 Примечание: Selenium Менеджер автоматически определяет драйверы, устраняя необходимость в жестко заданных путях к chromedriver.exe.
  • 🤖 Помощь ИИ: Агенты искусственного интеллекта генерируют сценарии оповещений и окон, учитывающие местоположение, что сокращает объем ручной работы при создании тестовых наборов.

Как обрабатывать оповещения и всплывающие окна в Selenium

Что такое оповещение в 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 Вебдрайвер Предоставляет четыре метода, охватывающих все взаимодействия с оповещениями.

  1. аннулирование увольнения() — щелкает Отмена .
driver.switchTo().alert().dismiss();
  1. недействительный акцепт() — щелкает OK .
driver.switchTo().alert().accept();
  1. Строка getText() — перехватывает сообщение об ошибке.
driver.switchTo().alert().getText();
  1. void sendKeys (String stringToSend) — вводит текст в всплывающее окно.
driver.switchTo().alert().sendKeys("Text");

Eclipse Функция автозаполнения отображает доступные методы оповещения после ввода текста.ping alert. в строке редактора. Переключайтесь из главного окна в окно оповещения в любое время, используя SeleniumАвтора .переключить на() метод.

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

Пример решения: Удаление демо-записи клиента

Давайте автоматизируем следующий сценарий. Мы будем использовать 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.

Guru99 всплывающих демонстрационных целевых страниц

Шаг 2) Нажмите Кликните сюда ссылка. Открывается новое дочернее окно.

Детское окно открывается по ссылке «Нажмите здесь».

Шаг 3) В дочернем окне пользователю предлагается ввести адрес электронной почты и отправить запрос.

Дочернее окно, форма ввода адреса электронной почты

Шаг 4) Введите адрес электронной почты и отправьте.

Отправка электронного письма в дочернем окне.

Шаг 5) На странице отображаются учетные данные доступа, полученные в результате демонстрации.

Учетные данные доступа отображаются в дочернем окне.

После отображения учетных данных:

  1. Закройте дочернее окно.

Закрытие дочернего окна в браузере

  1. Верните фокус обратно на родительское окно.

Возврат фокуса к родительскому окну.

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

Заключение

  • Определил три Selenium Типы оповещений — простое, всплывающее и подтверждающее — с подробным скриншотом для каждого.
  • Демонстрация обработки оповещений с помощью WebDriver. Alert интерфейс с использованием работающего сценария удаления клиента.
  • Обрабатывал несколько окон браузера, захватывая дескрипторы с помощью getWindowHandle() и getWindowHandles() и переключаясь между ними.

Часто задаваемые вопросы (FAQ)

Оповещение — это нативное JavaДиалоговое окно скрипта, которое приостанавливает загрузку страницы до обработки запроса. Всплывающее окно — это новое окно или вкладка браузера. Для оповещений используется switchTo().alert(); для всплывающих окон используется switchTo().window() с дескриптором, возвращаемым функцией getWindowHandles().

Исключение NoAlertPresentException возникает, когда вызывается switchTo().alert(), но в данный момент не отображается предупреждение. Оберните вызов в WebDriverWait до тех пор, пока ExpectedConditions.alertIsPresent() не станет истинным, чтобы дать странице время для запуска диалогового окна.

Всплывающие окна с базовой аутентификацией не являются стандартными. JavaСкриптовые оповещения. Передайте учетные данные в URL (https://user:pass@site.com) или используйте Selenium 4. CDP Network.setExtraHTTPHeaders. Для всплывающих окон SSO используйте BrowserStack или зарегистрированный обработчик hasAuthentication.

ИИ-помощники, такие как AI Специалисты по разработке кода создают обработчики оповещений с учетом локаторов, прогнозируют необходимые ожидания и рефакторизуют ненадежные XPath-ы. Они также разрабатывают утверждения для текста оповещений и дочерних окон. URLс, ускоряясь Selenium создание тестов.

Да. Самовосстанавливающиеся тестовые платформы используют ИИ для обнаружения изменений DOM, замены неработающих локаторов и корректировки времени ожидания при изменении оповещений или всплывающих окон. Это снижает затраты на обслуживание. Selenium Пакеты программ работают с часто обновляемыми пользовательскими интерфейсами.

Подведем итог этой публикации следующим образом: