Як обробляти сповіщення та спливаючі вікна в 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 веб-драйвер надає чотири методи, які охоплюють кожну взаємодію з оповіщеннями.
- void dismiss() — натискає на Скасувати .
driver.switchTo().alert().dismiss();
- недійсний accept() — натискає на OK .
driver.switchTo().alert().accept();
- Рядок getText() — фіксує повідомлення сповіщення.
driver.switchTo().alert().getText();
- void sendKeys(рядок stringToSend) — вводить текст у сповіщення-підказку.
driver.switchTo().alert().sendKeys("Text");
Eclipse автозаповнення показує доступні методи сповіщень після typing 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> кожного відкритого дескриптора вікна. Переберіть множину, щоб переключитися з головного вікна на будь-яке дочірнє вікно в програмі.
driver.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()та перемикання між ними.















