Hur man hanterar varningar och popup-fönster i Selenium?

⚡ Smart sammanfattning

Aviseringar och popup-fönster i Selenium är JavaSkriptdialogrutor och underfönster som blockerar automatiseringsflödet. Den här artikeln förklarar hur man identifierar enkla aviseringar, promptaviseringar och bekräftelseaviseringar, växlar till dem med WebDriver och hanterar flera fönster med getWindowHandles().

  • 🔔 Kärndefinition: A Selenium varning är en JavaSkriptdialogruta som visas ovanför sidan och som måste hanteras innan ytterligare åtgärder vidtas.
  • 🗂️ Tre varningstyper: Enkel (info), Fråga (textinmatning) och Bekräftelse (Ja/Nej) kräver alla olika WebDriver-anrop.
  • 🛠️ Aviserings-API: Använd driver.switchTo().alert() med accept(), dismiss(), getText() och sendKeys() för att interagera med dialogrutan.
  • 🪟 Fönsterhantering: getWindowHandle() returnerar det aktuella fönster-ID:t; getWindowHandles() returnerar hela uppsättningen för växling.
  • 🚀 Selenium 4 Obs! Selenium Manager löser automatiskt drivrutiner, vilket eliminerar behovet av hårdkodade chromedriver.exe-sökvägar.
  • 🤖 AI-hjälp: AI-agenter genererar lokaliseringsmedvetna varningar och fönsterskript, vilket minskar manuellt scaffolding i testsviter.

Hur man hanterar varningar och popup-fönster i Selenium

Vad är en varning i Selenium?

An Varning in Selenium är en liten JavaSkriptdialogruta som visas på skärmen för att ge användaren information eller meddelanden. Den kan bekräfta en specifik åtgärd, begära tillstånd att utföra en åtgärd eller visa ett varningsmeddelande.

I den här handledningen lär du dig hur du hanterar popup-fönster i Selenium och de olika typerna av varningar som finns i webbapplikationen testningVi kommer också att se hur man hanterar en varning i Selenium WebDriver och hur man accepterar eller avvisar den beroende på varningstyp.

Typer av varningar i Selenium

JavaSkriptet exponerar tre varningsdialogrutor som Selenium måste hanteras annorlunda.

1) Simple Alert

Den enkla aviseringen visar information eller en varning på skärmen. Användaren kan bara bekräfta den genom att klicka på OK.

Exempel på enkel varningsdialogruta i webbläsaren

2) Prompt Alert

Promptaviseringen ber användaren om inmatning. Selenium WebDriver kan skriva in i den med hjälp av sendKeys("input...").

Snabb varningsdialog med inmatningsfält

3) Confirmation Alert

Bekräftelseaviseringen ber användaren att godkänna eller avbryta en åtgärd. Den exponerar både OK och Annullera knappar.

Bekräftelsemeddelandedialogruta med knapparna OK och Avbryt

Hur man hanterar en varning i Selenium webbdrivrutin

Ocuco-landskapet Alert gränssnitt i Selenium webbdrivrutin exponerar fyra metoder som täcker varje varningsinteraktion.

  1. void avvisa() — klickar på Annullera knapp.
driver.switchTo().alert().dismiss();
  1. void acceptera() — klickar på OK knapp.
driver.switchTo().alert().accept();
  1. Sträng getText() — fångar upp varningsmeddelandet.
driver.switchTo().alert().getText();
  1. void sendKeys(String stringToSend) — skriver in text i en snabb avisering.
driver.switchTo().alert().sendKeys("Text");

Eclipse autofullständig visar tillgängliga varningsmetoder efter typing alert. på redigeringsraden. Växla från huvudfönstret till varningen när som helst med hjälp av SeleniumÄr .byta till() metod.

Eclipse autofullständig visning av metoder för varningshantering

Fungerande exempel: Ta bort kunddemo

Låt oss automatisera följande scenario. Vi kommer att använda Guru99 demosida för att illustrera Selenium varningshantering.

Steg 1) Starta webbläsaren och öppna https://demo.guru99.com/test/delete_customer.php.

Steg 2) Ange valfritt kund-ID.

Ta bort kunddemosida med kund-ID-fältet

Steg 3) Klicka på Skicka knapp.

Skicka-knapp för att utlösa bekräftelseavisering

Steg 4) Acceptera eller ignorera den resulterande bekräftelseaviseringen.

Bekräftelseavisering utlöst av borttagningsåtgärd

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

Produktion: Webbläsaren öppnar sidan Ta bort kund, skickar kund-ID:t, accepterar bekräftelseaviseringen och tar bort posten från demoapplikationen.

Hur man hanterar popup-fönster Windows in Selenium webbdrivrutin

När automatisering måste fungera i flera webbläsarfönster måste testet växla fokus mellan dem och återgå till det överordnade fönstret efter varje åtgärd. Selenium WebDriver visar två metoder som gör detta möjligt.

drivrutin.getWindowHandles()

Returnerar en Set<String> för varje öppet fönsterhandtag. Iterera över uppsättningen för att växla från huvudfönstret till valfritt underfönster i applikationen.

driver.getWindowHandle()

Returnerar en String med det unika handtaget för det aktuella fönstret. Spara detta innan du öppnar ett underfönster så att du kan återgå till det överordnade senare.

Följ dessa steg för att demonstrera fönsterhantering mot Guru99 popup-demo.

Arbetsexempel: Fönsterbyte

Steg 1) Starta webbläsaren och öppna https://demo.guru99.com/popup.php.

Guru99 popup-demo-landningssida

Steg 2) Klicka på Klicka här länk. Ett nytt underfönster öppnas.

Underfönster som öppnas från länken Klicka här

Steg 3) I underfönstret uppmanas användaren att ange ett e-postadress och skicka.

E-postinmatningsformulär för underordnat fönster

Steg 4) Ange e-postadressen och skicka.

E-postinlämning i underfönstret

Steg 5) Sidan visar de åtkomstuppgifter som returneras av demon.

Åtkomstuppgifter som visas i underfönstret

Efter att inloggningsuppgifterna visas:

  1. Stäng barnfönstret.

Stänga underfönstret i webbläsaren

  1. Flytta fokus tillbaka till det överordnade fönstret.

Byter fokus tillbaka till moderfönstret

Selenium Java CodeHantera flera 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();
    }
}

Produktion: Webbplatsen lanseras, den Klicka här länken öppnar en underflik, Selenium skriver in e-postmeddelandet och skickar, stänger det underordnade fönstret och återgår till det överordnade.

Hantering av flera fönster slutförd i Selenium

Slutsats

  • Definierade de tre Selenium varningstyper – enkel, snabb och bekräftelse – med en skärmdump för varje.
  • Demonstrerad varningshantering med WebDriver Alert gränssnitt med hjälp av ett fungerande scenario för borttagning av kund.
  • Hanterade flera webbläsarfönster genom att hämta handtag med getWindowHandle() och getWindowHandles() och växlar mellan dem.

Vanliga frågor

En varning är en inbyggd JavaSkriptdialogruta som pausar sidan tills den hanteras. Ett popup-fönster är ett nytt webbläsarfönster eller en ny flik. Aviseringar använder switchTo().alert(); popup-fönster använder switchTo().window() med handtaget som returneras av getWindowHandles().

NoAlertPresentException utlöses när switchTo().alert() körs men ingen varning visas för närvarande. Radbryt anropet med WebDriverWait tills ExpectedConditions.alertIsPresent() är sant för att ge sidan tid att utlösa dialogrutan.

Popup-fönster för grundläggande autentisering är inte standard JavaSkriptaviseringar. Skicka inloggningsuppgifter i URL (https://användare:pass@site.com) eller använd Selenium 4 CDP Network.setExtraHTTPHeaders. För SSO-popupfönster, använd BrowserStack eller en registrerad hasAuthentication-hanterare.

AI-assistenter som t.ex. AI Kodcopiloter genererar lokaliseringsmedvetna varningshanterare, förutspår nödvändiga väntetider och omstrukturerar spröd XPath. De utarbetar även påståenden för varningstext och underfönster. URLs, accelererande Selenium testskapande.

Ja. Självläkande testplattformar använder AI för att upptäcka DOM-ändringar, byta trasiga positionerare och justera väntetider när varningar eller popup-fönster ändras. Detta minskar underhållet för Selenium sviter som körs mot ofta uppdaterade användargränssnitt.

Sammanfatta detta inlägg med: