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().

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.
2) Prompt Alert
Den hurtige alarm beder brugeren om input. Selenium WebDriver kan skrive ind i den ved hjælp af sendKeys("input...").
3) Confirmation Alert
Bekræftelsesadvarslen beder brugeren om at godkende eller annullere en handling. Den eksponerer begge OK og Ophæve knapper.
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.
- void afskedig() — klikker på Ophæve .
driver.switchTo().alert().dismiss();
- void accept() — klikker på OK .
driver.switchTo().alert().accept();
- Streng getText() — indfanger alarmmeddelelsen.
driver.switchTo().alert().getText();
- 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.
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.
Trin 3) Klik på knappen Insend .
Trin 4) Accepter eller afvis den resulterende bekræftelsesadvarsel.
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.
Trin 2) Klik på knappen Klik her link. Et nyt undervindue åbnes.
Trin 3) Det underordnede vindue beder brugeren om at indtaste et e-mail-id og indsende.
Trin 4) Indtast e-mail-ID'et og send.
Trin 5) Siden viser de adgangsoplysninger, der returneres af demoen.
Efter at legitimationsoplysningerne er vist:
- Luk børnevinduet.
- Skift 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.
Konklusion
- Definerede de tre Selenium alarmtyper — simpel, hurtig og bekræftelse — med et skærmbillede for hver.
- Demonstreret alarmhåndtering med WebDriver
Alertgrænseflade ved hjælp af et fungerende scenario med sletning af kunde. - Håndterede flere browservinduer ved at indfange håndtag med
getWindowHandle()oggetWindowHandles()og skifter mellem dem.















