Slik håndterer du varsler og popup-vinduer i Selenium?

⚡ Smart oppsummering

Varsler og popup-vinduer i Selenium er JavaSkriptdialoger og undervinduer som blokkerer automatiseringsflyt. Denne artikkelen forklarer hvordan du identifiserer enkle varsler, ledetekstvarsler og bekreftelsesvarsler, bytter til dem med WebDriver og administrerer flere vinduer ved hjelp av getWindowHandles().

  • 🔔 Kjernedefinisjon: A Selenium varselet er et JavaSkriptdialogboksen vises over siden som må håndteres før videre handlinger.
  • 🗂️ Tre varslingstyper: Enkel (info), Spørsmål (tekstinndata) og Bekreftelse (Ja/Nei) krever hver forskjellige WebDriver-kall.
  • 🛠️ Varslings-API: Bruk driver.switchTo().alert() med accept(), dismiss(), getText() og sendKeys() for å samhandle med dialogboksen.
  • 🪟 Vindushåndtering: getWindowHandle() returnerer gjeldende vindus-ID; getWindowHandles() returnerer hele settet for bytte.
  • 🚀 Selenium 4 Merk: Selenium Manager løser drivere automatisk, og fjerner behovet for hardkodede chromedriver.exe-stier.
  • 🤖 AI-hjelp: AI-agenter genererer lokaliseringsbevisste varsler og vindusskript, noe som reduserer manuell stillasering i testsuiter.

Slik håndterer du varsler og popup-vinduer i Selenium

Hva er et varsel i Selenium?

An Varsle inn Selenium er en liten JavaSkriptdialogboks som vises på skjermen for å gi brukeren informasjon eller varsler. Den kan bekrefte en bestemt handling, be om tillatelse til å utføre en operasjon eller vise en advarselsmelding.

I denne veiledningen lærer du hvordan du håndterer popup-vinduer i Selenium og de ulike typene varsler som finnes i webapplikasjonen testingVi skal også se hvordan man håndterer et varsel i Selenium WebDriver og hvordan du godtar eller avviser den avhengig av varseltypen.

Typer varsler i Selenium

JavaSkriptet eksponerer tre varslingsdialoger som Selenium må håndteres annerledes.

1) Simple Alert

Det enkle varselet viser informasjon eller en advarsel på skjermen. Brukeren kan bare bekrefte det ved å klikke på OK.

Eksempel på enkel varslingsdialog i nettleseren

2) Prompt Alert

Varselet ber brukeren om innspill. Selenium WebDriver kan skrive inn i den ved hjelp av sendKeys("input...").

Varseldialog med inndatafelt

3) Confirmation Alert

Bekreftelsesvarselet ber brukeren om å godkjenne eller avbryte en operasjon. Det eksponerer begge OK og Kansellere knapper.

Bekreftelsesvarseldialog med OK- og Avbryt-knapper

Slik håndterer du et varsel i Selenium webdriver

Ocuco Alert grensesnitt i Selenium webdriver eksponerer fire metoder som dekker alle varslingsinteraksjoner.

  1. void avvis() — klikker på Kansellere knapp.
driver.switchTo().alert().dismiss();
  1. void accept() — klikker på OK knapp.
driver.switchTo().alert().accept();
  1. String getText() — fanger opp varselmeldingen.
driver.switchTo().alert().getText();
  1. void sendKeys(String stringToSend) — skriver tekst inn i et varsel.
driver.switchTo().alert().sendKeys("Text");

Eclipse autofullføring viser tilgjengelige varslingsmetoder etter typing alert. på redigeringslinjen. Bytt fra hovedvinduet til varselet når som helst ved å bruke Selenium'S .switchTo() metoden.

Eclipse autofullføring som viser metoder for håndtering av varsler

Fungert eksempel: Slett kundedemo

La oss automatisere følgende scenario. Vi bruker Guru99 demoside for å illustrere Selenium varslingshåndtering.

Trinn 1) Start nettleseren og åpne den https://demo.guru99.com/test/delete_customer.php.

Trinn 2) Skriv inn en hvilken som helst kunde-ID.

Slett kundedemoside med kunde-ID-feltet

Trinn 3) Klikk på Send knapp.

Send-knapp for å utløse bekreftelsesvarsel

Trinn 4) Godta eller avvis det resulterende bekreftelsesvarselet.

Bekreftelsesvarsel utløst av slettehandling

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

Utgang: Nettleseren åpner siden Slett kunde, sender inn kunde-ID-en, godtar bekreftelsesvarselet og fjerner posten fra demoapplikasjonen.

Slik håndterer du popup-vinduer Windows in Selenium webdriver

Når automatisering må fungere på tvers av flere nettleservinduer, må testen bytte fokus mellom dem og gå tilbake til det overordnede vinduet etter hver operasjon. Selenium WebDriver eksponerer to metoder som gjør dette mulig.

driver.getWindowHandles()

Returnerer en Set<String> for hvert åpne vindushåndtak. Iterer over settet for å bytte fra hovedvinduet til et hvilket som helst undervindu i applikasjonen.

driver.getWindowHandle()

Returnerer en String med det unike håndtaket til gjeldende vindu. Registrer dette før du åpner et undervindu, slik at du kan gå tilbake til det overordnede vinduet senere.

Følg disse trinnene for å demonstrere vindushåndtering mot Guru99 popup-demo.

Fungert eksempel: Vindusbytte

Trinn 1) Start nettleseren og åpne den https://demo.guru99.com/popup.php.

Guru99 popup-demo-landingsside

Trinn 2) Klikk på Klikk her lenke. Et nytt undervindu åpnes.

Barnevindu åpnes fra Klikk her-lenken

Trinn 3) Undervinduet ber brukeren om å oppgi en e-postadresse og sende inn.

E-postinndataskjema for underordnet vindu

Trinn 4) Skriv inn e-postadressen og send inn.

E-postinnsending i undervinduet

Trinn 5) Siden viser tilgangslegitimasjonen som returneres av demoen.

Tilgangslegitimasjon som vises i undervinduet

Etter at legitimasjonene vises:

  1. Lukk barnevinduet.

Lukking av undervinduet i nettleseren

  1. Flytt fokus tilbake til det overordnede vinduet.

Flytter fokus tilbake til det overordnede vinduet

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();
    }
}

Utgang: Nettstedet lanseres, Klikk her lenken åpner en underfane, Selenium skriver inn e-posten og sender den inn, lukker det underordnede vinduet og går tilbake til den overordnede.

Håndtering av flere vinduer fullført i Selenium

Konklusjon

  • Definerte de tre Selenium varslingstyper – enkel, rask og bekreftelse – med et skjermbilde for hver.
  • Demonstrert varslingshåndtering med WebDriver Alert grensesnitt ved hjelp av et fungerende scenario for sletting av kunder.
  • Håndterte flere nettleservinduer ved å fange opp referanser med getWindowHandle() og getWindowHandles() og bytte mellom dem.

Spørsmål og svar

Et varsel er en naturlig del av et varsel JavaSkriptdialog som suspenderer siden til den håndteres. Et popup-vindu er et nytt nettleservindu eller en ny fane. Varsler bruker switchTo().alert(); popup-vinduer bruker switchTo().window() med referansen returnert av getWindowHandles().

NoAlertPresentException utløses når switchTo().alert() kjører, men ingen varsler vises for øyeblikket. Pakk kallet med WebDriverWait til ExpectedConditions.alertIsPresent() er sann for å gi siden tid til å utløse dialogboksen.

Grunnleggende autentiseringspopuper er ikke standard JavaSkriptvarsler. Overfør legitimasjon i URL (https://bruker:pass@site.com) eller bruk Selenium 4 CDP Network.setExtraHTTPHeaders. For SSO-popup-vinduer, bruk BrowserStack eller en registrert hasAuthentication-håndterer.

AI-assistenter som f.eks. AI Kodepiloter genererer lokatorbevisste varslingshåndterere, forutsier nødvendige ventetider og refaktorerer skjør XPath. De utarbeider også påstander for varslingstekst og undervindu. URLs, akselererende Selenium testoppretting.

Ja. Selvreparerende testplattformer bruker AI til å oppdage DOM-endringer, bytte ødelagte lokatorer og justere ventetider når varsler eller popup-vinduer endres. Dette reduserer vedlikehold for Selenium Suiter som kjører mot ofte oppdaterte grensesnitt.

Oppsummer dette innlegget med: