Hogyan kezeljük a riasztásokat és felugró ablakokat? Selenium?

⚡ Okos összefoglaló

Riasztások és felugró ablakok Selenium faliórái JavaSzkript párbeszédablakok és alárendelt ablakok, amelyek blokkolják az automatizálási folyamatot. Ez a cikk elmagyarázza, hogyan azonosíthatók az egyszerű, a prompt és a megerősítő riasztások, hogyan válthat ezekre a WebDriver segítségével, és hogyan kezelhet több ablakot a getWindowHandles() használatával.

  • 🔔 Alapvető definíció: A Selenium riasztás egy JavaAz oldal felett megjelenített szkript párbeszédablak, amelyet a további műveletek előtt kezelni kell.
  • 🗂️ Három riasztási típus: Az Egyszerű (info), a Prompt (szövegbevitel) és a Megerősítés (Igen/Nem) mindegyike különböző WebDriver hívást igényel.
  • 🇧🇷 Riasztási API: Használd a driver.switchTo().alert() függvényt az accept(), dismiss(), getText() és sendKeys() függvénnyel a párbeszédpanellel való interakcióhoz.
  • 🪟 Ablakkezelés: A getWindowHandle() függvény visszaadja az aktuális ablak azonosítóját; a getWindowHandles() függvény pedig a teljes váltási halmazt adja vissza.
  • 🚀 Selenium 4 Megjegyzés: Selenium A Manager automatikusan feloldja az illesztőprogramokat, így nincs szükség fixen kódolt chromedriver.exe elérési utakra.
  • 🤖 AI segítség: A mesterséges intelligencia által vezérelt ügynökök helymeghatározó-tudatos riasztási és ablakszkripteket generálnak, csökkentve a manuális áteresztőképességet a tesztcsomagokban.

Hogyan kezeljük a riasztásokat és felugró ablakokat? Selenium

Mi az a riasztás? Selenium?

An Figyelmeztetés be Selenium kicsi JavaSzkript párbeszédpanel, amely megjelenik a képernyőn, hogy információt vagy értesítést adjon a felhasználónak. Megerősíthet egy adott műveletet, engedélyt kérhet egy művelet végrehajtására, vagy figyelmeztető üzenetet jeleníthet meg.

Ebben az oktatóanyagban megtanulod, hogyan kezeld a felugró ablakokat Selenium és a webes alkalmazásokban található különböző típusú riasztások tesztelésAzt is látni fogjuk, hogyan kell kezelni egy riasztást a Selenium WebDriver és annak elfogadása vagy elutasítása a riasztás típusától függően.

A riasztások típusai itt Selenium

JavaA szkript három riasztási párbeszédablakot jelenít meg, amelyek Selenium másképp kell kezelni.

1) Simple Alert

Az egyszerű riasztás információt vagy figyelmeztetést jelenít meg a képernyőn. A felhasználó csak kattintással nyugtázhatja azt. OK.

Egyszerű riasztási párbeszédpanel példa böngészőben

2) Prompt Alert

A riasztási üzenet bemenetet kér a felhasználótól. Selenium A WebDriver a következőképpen írhatja be: sendKeys("input...").

Figyelmeztető párbeszédpanel beviteli mezővel

3) Confirmation Alert

A megerősítő riasztás arra kéri a felhasználót, hogy hagyjon jóvá vagy vonjon vissza egy műveletet. Mindkettőt elérhetővé teszi OK és a Mégsem gombok.

Megerősítő riasztási párbeszédpanel OK és Mégse gombokkal

Hogyan kezeljünk egy riasztást Selenium webdriver

Az Alert interfész Selenium webdriver négy metódust mutat be, amelyek minden riasztási interakciót lefednek.

  1. érvénytelen elvetés () — rákattint a Mégsem gombot.
driver.switchTo().alert().dismiss();
  1. érvénytelen elfogadás() — rákattint a OK gombot.
driver.switchTo().alert().accept();
  1. String getText() — rögzíti a riasztási üzenetet.
driver.switchTo().alert().getText();
  1. void sendKeys (StringToSend) — szöveget gépel be egy riasztási ablakba.
driver.switchTo().alert().sendKeys("Text");

Eclipse Az automatikus kiegészítés a ty után elérhető riasztási metódusokat mutatjaping alert. a szerkesztősorban. Bármikor válthat a főablakból a riasztásba a következővel: Selenium'S .váltani() módszer.

Eclipse automatikus kiegészítés, amely a riasztáskezelési módszereket mutatja

Működő példa: Ügyfél demó törlése

Automatizáljuk a következő forgatókönyvet. A következőt fogjuk használni: Guru99 bemutató oldal a szemléltetéshez Selenium riasztáskezelés.

Step 1) Indítsd el a böngészőt és nyisd meg https://demo.guru99.com/test/delete_customer.php.

Step 2) Adjon meg egy tetszőleges ügyfél-azonosítót.

Ügyfélazonosító mezővel rendelkező ügyféldemó oldal törlése

Step 3) Kattintson az Küldés gombot.

Küldés gomb a megerősítő riasztás aktiválásához

Step 4) Fogadja el vagy utasítsa el a megjelenő megerősítő riasztást.

Törlési művelet által kiváltott megerősítő riasztás

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

output: A böngésző megnyitja az Ügyfél törlése oldalt, beküldi az ügyfél-azonosítót, elfogadja a megerősítő riasztást, és eltávolítja a rekordot a demóalkalmazásból.

Hogyan kezeljük a felugró ablakokat Windows in Selenium webdriver

Amikor az automatizálásnak több böngészőablakon kell működnie, a tesztnek minden művelet után váltania kell a fókuszt közöttük, és vissza kell térnie a szülőablakba. Selenium A WebDriver két módszert mutat be, amelyek ezt lehetővé teszik.

driver.getWindowHandles()

Visszaad egy Set<String> minden megnyitott ablak fogantyújánál. Menjen végig a halmazon, hogy a főablakról az alkalmazás bármely alárendelt ablakára váltson.

driver.getWindowHandle()

Visszaad egy String az aktuális ablak egyedi azonosítójával. Rögzítse ezt bármelyik gyermekablak megnyitása előtt, hogy később visszatérhessen a szülőablakba.

Kövesse az alábbi lépéseket az ablakkezelés bemutatásához a Guru99 felugró demó.

Működő példa: Ablakváltás

Step 1) Indítsd el a böngészőt és nyisd meg https://demo.guru99.com/popup.php.

Guru99 felugró demó landing oldal

Step 2) Kattintson az Kattints ide link. Megnyílik egy új alárendelt ablak.

Gyermekablak nyitása a Kattints ide linkre kattintva

Step 3) Az alárendelt ablak arra kéri a felhasználót, hogy adjon meg egy e-mail azonosítót, majd küldje el.

Gyermekablak e-mail beviteli űrlapja

Step 4) Add meg az e-mail azonosítót, és küldd el.

E-mail beküldés az alárendelt ablakban

Step 5) Az oldal megjeleníti a demó által visszaadott hozzáférési hitelesítő adatokat.

Hozzáférési hitelesítő adatok megjelenítése az alárendelt ablakban

A hitelesítő adatok megjelenítése után:

  1. Zárja be a gyermek ablakot.

A böngésző gyermekablakának bezárása

  1. Váltsa vissza a fókuszt a szülőablakra.

Fókusz visszaváltása a szülőablakra

Selenium Java CodeTöbb kezelése 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();
    }
}

output: Az oldal elindul, a Kattintson ide a hivatkozás egy alárendelt lapot nyit meg, Selenium beírja az e-mailt és elküldi, bezárja a gyermek ablakot, és visszatér a szülőhöz.

Több ablak kezelése befejeződött Selenium

Összegzés

  • Meghatározta a hármat Selenium riasztástípusok – egyszerű, azonnali és megerősítő – mindegyikhez képernyőképmel.
  • Riasztáskezelés bemutatása a WebDriver segítségével Alert felület egy működő ügyféltörlési forgatókönyv használatával.
  • Több böngészőablakot kezelt a handle-ök rögzítésével a következővel: getWindowHandle() és a getWindowHandles() és váltogatva közöttük.

GYIK

A riasztás natív JavaSzkript párbeszédpanel, amely felfüggeszti az oldalt a kezelésig. A felugró ablak egy új böngészőablak vagy lap. A riasztások a switchTo().alert() függvényt használják; a felugró ablakok a switchTo().window() függvényt használják, a getWindowHandles() által visszaadott handle-lel.

NoAlertPresentException kivétel keletkezik, amikor a switchTo().alert() lefut, de jelenleg nincs megjelenített riasztás. A hívást WebDriverWait függvénnyel kell lezárni, amíg az ExpectedConditions.alertIsPresent() igaz nem lesz, hogy az oldalnak legyen ideje elindítani a párbeszédpanelt.

Az alapszintű hitelesítési felugró ablakok nem szabványosak JavaSzkriptriasztások. Adja át a hitelesítő adatokat a URL (https://user:pass@site.com) vagy használja Selenium 4 CDP Network.setExtraHTTPHeaders. SSO felugró ablakokhoz használd a BrowserStack-et vagy egy regisztrált hasAuthentication kezelőt.

A mesterséges intelligencia asszisztensei, mint például AI A kód másodpilóták lokátor-tudatos riasztáskezelőket generálnak, előrejelzik a szükséges várakozási időket, és újragondolják a brittle XPath-ot. Emellett állításokat is készítenek a riasztási szöveghez és a gyermek ablakhoz. URLs, gyorsulva Selenium teszt létrehozása.

Igen. Az önjavító tesztplatformok mesterséges intelligenciát használnak a DOM-változások észlelésére, a hibás lokátorok cseréjére és a várakozási idő beállítására, amikor a riasztások vagy felugró ablakok eltolódnak. Ez csökkenti a karbantartási igényt. Selenium gyakran frissített kezelőfelületeken futó csomagok.

Foglald össze ezt a bejegyzést a következőképpen: