Sådan håndterer du advarsler og pop op-vinduer i Selenium?

⚡ Smart opsummering

Advarsler og pop op-vinduer i Selenium er JavaScriptdialoger og undervinduer, der blokerer automatiseringsflow. Denne artikel forklarer, hvordan man identificerer simple, prompt- og bekræftelsesalarmer, skifter til dem med WebDriver og administrerer flere vinduer ved hjælp af getWindowHandles().

  • 🔔 Kernedefinition: A Selenium alarm er en JavaScriptdialogboks vist over siden, som skal håndteres før yderligere handlinger.
  • 🗂️ Tre alarmtyper: Simpel (info), Prompt (tekstinput) og Bekræftelse (Ja/Nej) kræver hver især forskellige WebDriver-kald.
  • 🛠️ Alarm-API: Brug driver.switchTo().alert() med accept(), dismiss(), getText() og sendKeys() til at interagere med dialogen.
  • 🪟 Håndtering af vinduer: getWindowHandle() returnerer det aktuelle vindues-ID; getWindowHandles() returnerer det fulde sæt for skift.
  • 🚀 Selenium 4 Bemærk: Selenium Manager fortolker automatisk drivere, hvilket fjerner behovet for hardcodede chromedriver.exe-stier.
  • 🤖 AI Assistance: AI-agenter genererer lokaliseringsbevidste alarmer og vinduesscripts, hvilket reducerer manuel scaffolding i testsuiter.

Sådan håndterer du advarsler og pop op-vinduer i Selenium

Hvad er en alarm i Selenium?

An Alarm ind Selenium er en lille JavaScript-dialogboks, der vises på skærmen for at give brugeren oplysninger eller beskeder. Den kan bekræfte en bestemt handling, anmode om tilladelse til at udføre en operation eller vise en advarselsmeddelelse.

I denne vejledning lærer du, hvordan du håndterer popups i Selenium og de forskellige typer advarsler, der findes i webapplikationen testVi vil også se på, hvordan man håndterer en alarm i Selenium WebDriver og hvordan man accepterer eller afviser den afhængigt af alarmtypen.

Typer af advarsler i Selenium

JavaScriptet viser tre advarselsdialoger, der Selenium skal håndteres anderledes.

1) Simple Alert

Den simple alarm viser information eller en advarsel på skærmen. Brugeren kan kun bekræfte den ved at klikke på OK.

Eksempel på en simpel advarselsdialog i browseren

2) Prompt Alert

Den hurtige alarm beder brugeren om input. Selenium WebDriver kan skrive ind i den ved hjælp af sendKeys("input...").

Hurtig alarmdialog med inputfelt

3) Confirmation Alert

Bekræftelsesadvarslen beder brugeren om at godkende eller annullere en handling. Den eksponerer begge OK og Ophæve knapper.

Bekræftelsesalarmdialog med knapperne OK og Annuller

Sådan håndterer du en alarm i Selenium webdriver

Alert grænseflade i Selenium webdriver afslører fire metoder, der dækker alle alarminteraktioner.

  1. void afskedig() — klikker på Ophæve .
driver.switchTo().alert().dismiss();
  1. void accept() — klikker på OK .
driver.switchTo().alert().accept();
  1. Streng getText() — indfanger alarmmeddelelsen.
driver.switchTo().alert().getText();
  1. void sendKeys(String stringToSend) — skriver tekst ind i en prompt alarm.
driver.switchTo().alert().sendKeys("Text");

Eclipse autofuldførelse viser de tilgængelige alarmmetoder efter typing alert. på redigeringslinjen. Skift fra hovedvinduet til alarmen når som helst ved hjælp af Selenium's .skifte til() fremgangsmåde.

Eclipse autofuldførelse viser metoder til håndtering af alarmer

Eksempel på udførelse: Slet kundedemo

Lad os automatisere følgende scenarie. Vi bruger Guru99 demoside til illustration Selenium håndtering af alarmer.

Trin 1) Start browseren og åbn den https://demo.guru99.com/test/delete_customer.php.

Trin 2) Indtast et hvilket som helst kunde-ID.

Slet kundens demoside med kunde-ID-feltet

Trin 3) Klik på knappen Insend .

Send-knap for at udløse bekræftelsesalarm

Trin 4) Accepter eller afvis den resulterende bekræftelsesadvarsel.

Bekræftelsesadvarsel udløst af slettehandling

Selenium Java Code: Håndtere 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: Browseren åbner siden Slet kunde, sender kunde-id'et, accepterer bekræftelsesadvarslen og fjerner posten fra demoapplikationen.

Sådan håndterer du pop op-vinduer Windows in Selenium webdriver

Når automatisering skal fungere på tværs af flere browservinduer, skal testen skifte fokus mellem dem og vende tilbage til det overordnede vindue efter hver handling. Selenium WebDriver præsenterer to metoder, der gør dette muligt.

driver.getWindowHandles()

Returnerer en Set<String> for hvert åbent vindueshåndtag. Gentag sættet for at skifte fra hovedvinduet til et hvilket som helst undervindue i applikationen.

driver.getWindowHandle()

Returnerer en String med det unikke håndtag for det aktuelle vindue. Registrer dette, før du åbner et undervindue, så du kan vende tilbage til det overordnede vindue senere.

Følg disse trin for at demonstrere vindueshåndtering i forhold til Guru99 popup-demo.

Udarbejdet eksempel: Vinduesskift

Trin 1) Start browseren og åbn den https://demo.guru99.com/popup.php.

Guru99 popup demo landingsside

Trin 2) Klik på knappen Klik her link. Et nyt undervindue åbnes.

Undervindue åbnes fra linket Klik her

Trin 3) Det underordnede vindue beder brugeren om at indtaste et e-mail-id og indsende.

E-mail-inputformular for underordnet vindue

Trin 4) Indtast e-mail-ID'et og send.

E-mail-indsendelse i det underordnede vindue

Trin 5) Siden viser de adgangsoplysninger, der returneres af demoen.

Adgangsoplysninger vist i undervinduet

Efter at legitimationsoplysningerne er vist:

  1. Luk børnevinduet.

Lukning af undervinduet i browseren

  1. Skift fokus tilbage til det overordnede vindue.

Skifter fokus tilbage til det overordnede vindue

Selenium Java CodeHåndter flere 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: Siden lanceres, den Klik her link åbner en underfane, Selenium indtaster e-mailen og sender den, lukker det underordnede vindue og vender tilbage til den overordnede.

Håndtering af flere vinduer fuldført i Selenium

Konklusion

  • Definerede de tre Selenium alarmtyper — simpel, hurtig og bekræftelse — med et skærmbillede for hver.
  • Demonstreret alarmhåndtering med WebDriver Alert grænseflade ved hjælp af et fungerende scenario med sletning af kunde.
  • Håndterede flere browservinduer ved at indfange håndtag med getWindowHandle() og getWindowHandles() og skifter mellem dem.

Ofte Stillede Spørgsmål

En alarm er en indfødt JavaScriptdialog, der suspenderer siden, indtil den håndteres. Et pop op-vindue er et nyt browservindue eller en ny fane. Advarsler bruger switchTo().alert(); pop op-vinduer bruger switchTo().window() med det handle, der returneres af getWindowHandles().

NoAlertPresentException udløses, når switchTo().alert() kører, men der ikke vises nogen alarm i øjeblikket. Omslut kaldet med WebDriverWait, indtil ExpectedConditions.alertIsPresent() er sand for at give siden tid til at udløse dialogboksen.

Basisgodkendelsespopups er ikke standard JavaScript-advarsler. Videregiv legitimationsoplysninger i URL (https://bruger:pass@site.com) eller brug Selenium 4 CDP Network.setExtraHTTPHeaders. Brug BrowserStack eller en registreret hasAuthentication-handler til SSO-popups.

AI-assistenter som f.eks. AI Kodecopiloter genererer lokaliseringsbevidste alarmhåndterere, forudsiger nødvendige ventetider og refaktorerer skør XPath. De udarbejder også assertions til alarmtekst og underordnede vinduer. URLs, accelererende Selenium oprettelse af tester.

Ja. Selvreparerende testplatforme bruger AI til at registrere ændringer i DOM, udskifte defekte lokatorer og justere ventetider, når advarsler eller pop op-vinduer ændrer sig. Dette reducerer vedligeholdelsen af Selenium Suiter, der kører mod ofte opdaterede frontends.

Opsummer dette indlæg med: