Як обробляти сповіщення та спливаючі вікна в Selenium?

⚡ Розумний підсумок

Сповіщення та спливаючі вікна в Selenium він має JavaДіалогові вікна сценаріїв та дочірні вікна, що блокують процес автоматизації. У цій статті пояснюється, як ідентифікувати прості, запитувальні та підтверджувальні сповіщення, перемикатися на них за допомогою WebDriver та керувати кількома вікнами за допомогою getWindowHandles().

  • 🔔 Основне визначення: A Selenium сповіщення – це JavaДіалогове вікно скрипта, що відображається над сторінкою, яке необхідно обробити перед подальшими діями.
  • 🗂️ Три типи сповіщень: Простий запит (інформація), запит (введення тексту) та підтвердження (Так/Ні) потребують різних викликів WebDriver.
  • 🛠️ API сповіщень: Використовуйте driver.switchTo().alert() разом із accept(), dismiss(), getText() та sendKeys() для взаємодії з діалоговим вікном.
  • 🪟 Обробка вікон: getWindowHandle() повертає поточний ідентифікатор вікна; getWindowHandles() повертає повний набір (Set) для перемикання.
  • ???? Selenium Примітка 4: Selenium Менеджер автоматично визначає драйвери, усуваючи необхідність жорстко запрограмованих шляхів до chromedriver.exe.
  • 🤖 Допомога AI: Агенти штучного інтелекту генерують сценарії сповіщень та вікон з урахуванням локатора, що зменшує ручне складання каркасів у тестових наборах.

Як обробляти сповіщення та спливаючі вікна в 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 та Скасувати .

Діалогове вікно підтвердження з кнопками OK та Скасувати

Як обробити сповіщення в Selenium веб-драйвер

Команда Alert інтерфейс у Selenium веб-драйвер надає чотири методи, які охоплюють кожну взаємодію з оповіщеннями.

  1. void dismiss() — натискає на Скасувати .
driver.switchTo().alert().dismiss();
  1. недійсний accept() — натискає на OK .
driver.switchTo().alert().accept();
  1. Рядок getText() — фіксує повідомлення сповіщення.
driver.switchTo().alert().getText();
  1. void sendKeys(рядок stringToSend) — вводить текст у сповіщення-підказку.
driver.switchTo().alert().sendKeys("Text");

Eclipse автозаповнення показує доступні методи сповіщень після typing 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> кожного відкритого дескриптора вікна. Переберіть множину, щоб переключитися з головного вікна на будь-яке дочірнє вікно в програмі.

driver.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() та перемикання між ними.

Поширені запитання

Оповіщення є рідним JavaДіалогове вікно скрипта, яке призупиняє сторінку до її обробки. Спливаюче вікно – це нове вікно або вкладка браузера. Сповіщення використовують switchTo().alert(); спливаючі вікна використовують switchTo().window() з дескриптором, що повертається getWindowHandles().

Виняток NoAlertPresentException виникає, коли switchTo().alert() виконується, але наразі сповіщення не відображається. Завершіть виклик WebDriverWait, доки ExpectedConditions.alertIsPresent() не стане true, щоб дати сторінці час для запуску діалогового вікна.

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

Помічники штучного інтелекту, такі як AI Копілоти коду генерують обробники сповіщень з урахуванням локатора, прогнозують необхідні очікування та рефакторують крихкий XPath. Вони також створюють твердження для тексту сповіщень та дочірнього вікна. URLс, прискорення Selenium створення тесту.

Так. Самовідновлювальні тестові платформи використовують штучний інтелект для виявлення змін DOM, заміни пошкоджених локаторів та коригування очікування, коли змінюються сповіщення або спливаючі вікна. Це зменшує обсяг обслуговування. Selenium пакети, що працюють на часто оновлюваних інтерфейсах.

Підсумуйте цей пост за допомогою: