Jak zvládat upozornění a vyskakovací okna v Selenium?

⚡ Chytré shrnutí

Upozornění a vyskakovací okna v Selenium jsou JavaDialogová okna skriptů a podřízená okna, která blokují automatizační tok. Tento článek vysvětluje, jak identifikovat jednoduchá, výzvávácí a potvrzovací upozornění, přepínat do nich pomocí WebDriveru a spravovat více oken pomocí getWindowHandles().

  • 🔔 Základní definice: A Selenium výstraha je JavaDialogové okno skriptu vykreslené nad stránkou, které je nutné zpracovat před dalšími akcemi.
  • 🗂️ Tři typy upozornění: Jednoduché (info), výzva (zadání textu) a potvrzení (Ano/Ne) vyžadují každá jiná volání WebDriveru.
  • 🛠️ API pro upozornění: Pro interakci s dialogem použijte driver.switchTo().alert() s accept(), dismiss(), getText() a sendKeys().
  • 🪟 Manipulace s okny: Funkce getWindowHandle() vrací aktuální ID okna; funkce getWindowHandles() vrací celou sadu pro přepínání.
  • ???? Selenium 4 Poznámka: Selenium Správce automaticky vyhledává ovladače, čímž odpadá nutnost pevně zadávat cesty k souboru chromedriver.exe.
  • 🤖 Asistence AI: Agenti umělé inteligence generují skripty upozornění a oken s ohledem na lokátor, čímž se snižuje nutnost ručního scaffoldingu v testovacích sadách.

Jak zvládat upozornění a vyskakovací okna v Selenium

Co je to upozornění Selenium?

An Upozorněte Selenium je malý JavaDialogové okno skriptu, které se zobrazí na obrazovce a poskytne uživateli nějaké informace nebo oznámení. Může potvrdit konkrétní akci, požádat o povolení k provedení operace nebo zobrazit varovnou zprávu.

V tomto tutoriálu se naučíte, jak pracovat s vyskakovacími okny v Selenium a různé typy upozornění, které se nacházejí ve webové aplikaci TestováníTaké se podíváme, jak zpracovat upozornění v Selenium WebDriver a jak jej přijmout nebo odmítnout v závislosti na typu upozornění.

Typy upozornění v Selenium

JavaSkript zobrazuje tři dialogová okna s upozorněním, která Selenium musí zacházet jinak.

1) Simple Alert

Jednoduché upozornění zobrazuje na obrazovce informace nebo varování. Uživatel jej může potvrdit pouze kliknutím. OK.

Příklad jednoduchého dialogového okna s upozorněním v prohlížeči

2) Prompt Alert

Výzva k zadání požádá uživatele. Selenium WebDriver do něj může zadat pomocí sendKeys("input...").

Dialogové okno s upozorněním a vstupním polem

3) Confirmation Alert

Potvrzovací upozornění požádá uživatele o schválení nebo zrušení operace. Zpřístupňuje obojí OK a Zrušit Tlačítka.

Dialogové okno s potvrzovacím upozorněním s tlačítky OK a Storno

Jak zpracovat upozornění v Selenium webový ovladač

Jedno Alert rozhraní v Selenium webový ovladač zpřístupňuje čtyři metody, které pokrývají každou interakci s upozorněním.

  1. void dismiss() — klikne na Zrušit .
driver.switchTo().alert().dismiss();
  1. void accept() — klikne na OK .
driver.switchTo().alert().accept();
  1. Řetězec getText() — zachytí výstražnou zprávu.
driver.switchTo().alert().getText();
  1. void sendKeys(String stringToSend) — zadá text do výzvy k zadání upozornění.
driver.switchTo().alert().sendKeys("Text");

Eclipse Automatické doplňování zobrazuje dostupné metody upozornění po typing alert. v editoru. Z hlavního okna můžete kdykoli přepnout do upozornění pomocí SeleniumJe .přepnout na() metoda.

Eclipse automatické doplňování zobrazující metody zpracování upozornění

Příklad práce: Smazání zákaznické ukázky

Automatizujme následující scénář. Použijeme Guru99 demo stránek pro ilustraci Selenium zpracování výstrah.

Krok 1) Spusťte prohlížeč a otevřete https://demo.guru99.com/test/delete_customer.php.

Krok 2) Zadejte libovolné ID zákazníka.

Smazat demo stránku zákazníka s polem ID zákazníka

Krok 3) Klepněte na tlačítko Odeslat .

Tlačítko Odeslat pro spuštění potvrzovacího upozornění

Krok 4) Přijměte nebo odmítněte výsledné potvrzovací upozornění.

Upozornění na potvrzení spuštěné akcí smazání

Selenium Java Code: Rukojeť 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();
    }
}

Výstup: Prohlížeč otevře stránku Odstranit zákazníka, odešle ID zákazníka, přijme potvrzovací upozornění a odstraní záznam z demo aplikace.

Jak zvládnout vyskakovací okno Windows in Selenium webový ovladač

Pokud automatizace musí fungovat ve více oknech prohlížeče, musí test po každé operaci přepínat fokus mezi nimi a vracet se do nadřazeného okna. Selenium WebDriver nabízí dvě metody, které to umožňují.

driver.getWindowHandles()

Vrací Set<String> každého otevřeného popisovače okna. Iterací přes množinu přepnete z hlavního okna na jakékoli podřízené okno v aplikaci.

driver.getWindowHandle()

Vrací String s unikátním popisovačem aktuálního okna. Zaznamenejte ho před otevřením jakéhokoli podřízeného okna, abyste se později mohli vrátit k nadřazenému oknu.

Postupujte podle těchto kroků a demonstrujte zpracování oken v Guru99 vyskakovacích ukázek.

Pracovaný příklad: Přepínání oken

Krok 1) Spusťte prohlížeč a otevřete https://demo.guru99.com/popup.php.

Guru99 vyskakovacích ukázkových vstupních stránek

Krok 2) Klepněte na tlačítko Klikněte zde odkaz. Otevře se nové podřízené okno.

Podřízené okno se otevírá z odkazu Klikněte zde

Krok 3) Podřízené okno vyzve uživatele k zadání e-mailové adresy a odeslání.

Formulář pro zadávání e-mailů v podřízeném okně

Krok 4) Zadejte ID e-mailu a odešlete.

Odeslání e-mailu v podřízeném okně

Krok 5) Stránka zobrazuje přístupové údaje vrácené demoverzí.

Přístupové přihlašovací údaje zobrazené v podřízeném okně

Po zobrazení přihlašovacích údajů:

  1. Zavřete podřízené okno.

Zavření podřízeného okna v prohlížeči

  1. Přepnout fokus zpět na nadřazené okno.

Přepnutí fokusu zpět na nadřazené okno

Selenium Java CodeZvládnout více 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();
    }
}

Výstup: Spuštění webu, Klikněte zde odkaz otevírá podřízenou kartu, Selenium zadá e-mail a odešle ho, zavře podřízené okno a vrátí se rodičovskému.

Zpracování více oken dokončeno v Selenium

Závěr

  • Definoval tři Selenium typy upozornění – jednoduché, okamžité a potvrzovací – se snímkem obrazovky pro každé z nich.
  • Demonstrace zpracování výstrah pomocí WebDriveru Alert rozhraní s použitím funkčního scénáře odstranění zákazníka.
  • Zvládl více oken prohlížeče zachycením úchytů pomocí getWindowHandle() a getWindowHandles() a přepínání mezi nimi.

Nejčastější dotazy

Výstraha je nativní JavaDialogové okno skriptu, které pozastaví stránku, dokud se s ní nic neděje. Vyskakovací okno je nové okno nebo karta prohlížeče. Upozornění používají switchTo().alert(); vyskakovací okna používají switchTo().window() s popisovačem vráceným funkcí getWindowHandles().

Výjimka NoAlertPresentException je vyvolána, když je spuštěna metoda switchTo().alert(), ale aktuálně se nezobrazuje žádné upozornění. Volání se zabalí do funkce WebDriverWait, dokud nebude hodnota ExpectedConditions.alertIsPresent() true, aby stránka měla čas spustit dialog.

Vyskakovací okna pro základní ověřování nejsou standardní JavaUpozornění skriptů. Předejte přihlašovací údaje v URL (https://user:pass@site.com) nebo použijte Selenium 4 CDP Network.setExtraHTTPHeaders. Pro vyskakovací okna SSO použijte BrowserStack nebo registrovaný obslužný program hasAuthentication.

Asistenti s umělou inteligencí, jako například AI Code Copilots generují obslužné rutiny upozornění s ohledem na lokátor, předpovídají požadované čekání a refaktorují křehký XPath. Také navrhují aserce pro text upozornění a podřízené okno. URLs, zrychlující Selenium tvorba testu.

Ano. Samoopravitelné testovací platformy používají umělou inteligenci k detekci změn DOM, výměně poškozených lokátorů a úpravě čekání při změně upozornění nebo vyskakovacích oken. To snižuje potřebu údržby. Selenium sady běžící na často aktualizovaných frontendech.

Shrňte tento příspěvek takto: