Hoe u waarschuwingen en pop-ups in uw browser kunt verwerken Selenium?

โšก Slimme samenvatting

Waarschuwingen en pop-ups in Selenium zijn JavaScriptdialoogvensters en subvensters die de automatiseringsworkflow blokkeren. Dit artikel legt uit hoe u eenvoudige, prompt- en bevestigingsmeldingen kunt identificeren, ernaar kunt overschakelen met WebDriver en meerdere vensters kunt beheren met getWindowHandles().

  • ๐Ÿ”” Kerndefinitie: A Selenium waarschuwing is een JavaBoven de pagina wordt een scriptdialoogvenster weergegeven dat moet worden afgehandeld voordat verdere acties kunnen worden uitgevoerd.
  • ๐Ÿ—‚๏ธ Drie soorten waarschuwingen: Voor de opties 'Eenvoudig' (info), 'Prompt' (tekstinvoer) en 'Bevestiging' (Ja/Nee) zijn verschillende WebDriver-aanroepen nodig.
  • ๏ธ Alert API: Gebruik driver.switchTo().alert() met accept(), dismiss(), getText() en sendKeys() om met het dialoogvenster te interageren.
  • ๐ŸชŸ Vensterafhandeling: getWindowHandle() retourneert de ID van het huidige venster; getWindowHandles() retourneert de volledige Set om tussen vensters te wisselen.
  • ๐Ÿš€ Selenium 4 Opmerking: Selenium Manager lost automatisch stuurprogramma's op, waardoor het niet meer nodig is om paden naar chromedriver.exe hard te coderen.
  • ๐Ÿค– AI-assistentie: AI-agenten genereren locatiebewuste waarschuwings- en vensterscripts, waardoor handmatige opbouw in testsuites wordt verminderd.

Hoe u waarschuwingen en pop-ups in uw browser kunt verwerken Selenium

Wat is een waarschuwing in Selenium?

An Waarschuw binnen Selenium is een klein JavaEen scriptdialoogvenster dat op het scherm verschijnt om de gebruiker informatie of een melding te geven. Het kan een specifieke actie bevestigen, toestemming vragen om een โ€‹โ€‹bewerking uit te voeren of een waarschuwingsbericht weergeven.

In deze handleiding leer je hoe je pop-ups kunt beheren in Selenium en de verschillende soorten waarschuwingen die in webapplicaties voorkomen het testen vanWe zullen ook zien hoe we een waarschuwing kunnen afhandelen in Selenium WebDriver en hoe je een melding kunt accepteren of weigeren, afhankelijk van het type melding.

Soorten waarschuwingen in Selenium

JavaHet script toont drie waarschuwingsvensters die Selenium moet anders worden aangepakt.

1) Simple Alert

De eenvoudige melding geeft informatie of een waarschuwing weer op het scherm. De gebruiker kan deze alleen bevestigen door te klikken. OK.

Eenvoudig voorbeeld van een waarschuwingsvenster in de browser.

2) Prompt Alert

De promptmelding vraagt โ€‹โ€‹de gebruiker om invoer. Selenium WebDriver kan erin typen met behulp van sendKeys("input...").

Een prompt-waarschuwingsdialoogvenster met een invoerveld

3) Confirmation Alert

De bevestigingsmelding vraagt โ€‹โ€‹de gebruiker om een โ€‹โ€‹bewerking goed te keuren of te annuleren. Het toont beide opties. OK en Annuleer knoppen.

Bevestigingsdialoogvenster met knoppen OK en Annuleren

Hoe ga je om met een waarschuwing in Selenium webdriver

De Alert interface in Selenium webdriver beschrijft vier methoden die alle interacties met waarschuwingen dekken.

  1. ongeldig ontslaan() โ€” klikt op Annuleer knop.
driver.switchTo().alert().dismiss();
  1. ongeldig accepteren() โ€” klikt op OK knop.
driver.switchTo().alert().accept();
  1. Tekenreeks getText() โ€” legt het waarschuwingsbericht vast.
driver.switchTo().alert().getText();
  1. void sendKeys(String stringToSend) โ€” typt tekst in een promptmelding.
driver.switchTo().alert().sendKeys("Text");

Eclipse Autocomplete toont de beschikbare waarschuwingsmethoden na typing alert. op de editorregel. Schakel op elk gewenst moment van het hoofdvenster naar de waarschuwing met Selenium's .overschakelen naar() methode.

Eclipse automatisch aanvullen met methoden voor het afhandelen van waarschuwingen

Uitgewerkt voorbeeld: Klantdemo verwijderen

Laten we het volgende scenario automatiseren. We zullen gebruikmaken van de Guru99 demonstratiesites ter illustratie Selenium Afhandeling van meldingen.

Stap 1) Start de browser en open https://demo.guru99.com/test/delete_customer.php.

Stap 2) Voer een willekeurige klant-ID in.

Verwijder de demopagina voor klanten met het veld voor klant-ID.

Stap 3) Klik op de Verzenden knop.

De verzendknop activeert de bevestigingsmelding.

Stap 4) Accepteer of weiger de resulterende bevestigingsmelding.

Bevestigingsmelding geactiveerd door verwijderingsactie

Selenium Java Code: Hendel 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: De browser opent de pagina 'Klant verwijderen', verzendt het klant-ID, accepteert de bevestigingsmelding en verwijdert het record uit de demo-applicatie.

Hoe om te gaan met pop-ups Windows in Selenium webdriver

Wanneer automatisering in meerdere browservensters moet werken, moet de test na elke bewerking de focus tussen de vensters wisselen en terugkeren naar het hoofdvenster. Selenium WebDriver biedt twee methoden die dit mogelijk maken.

driver.getWindowHandles()

Retourneert a Set<String> van elke geopende venstergreep. Doorloop de set om te schakelen tussen het hoofdvenster en een willekeurig subvenster in de applicatie.

driver.getWindowHandle()

Retourneert a String met de unieke handle van het huidige venster. Leg deze vast voordat u een subvenster opent, zodat u later naar het hoofdvenster kunt terugkeren.

Volg deze stappen om de vensterafhandeling te demonstreren. Guru99 pop-up demo.

Uitgewerkt voorbeeld: Vensterwisseling

Stap 1) Start de browser en open https://demo.guru99.com/popup.php.

Guru99 pop-up demo landingspagina

Stap 2) Klik op de Klik Hier link. Er wordt een nieuw subvenster geopend.

Het kindervenster wordt geopend via de link 'Klik hier'.

Stap 3) Het subvenster vraagt โ€‹โ€‹de gebruiker om een โ€‹โ€‹e-mailadres in te voeren en te verzenden.

E-mailinvoerformulier voor het kindervenster

Stap 4) Voer het e-mailadres in en klik op verzenden.

E-mail verzenden in het subvenster

Stap 5) De pagina toont de toegangsgegevens die door de demo zijn geretourneerd.

De inloggegevens worden weergegeven in het subvenster.

Na het weergeven van de inloggegevens:

  1. Sluit het subvenster.

Het subvenster in de browser sluiten

  1. Zet de focus terug naar het hoofdvenster.

De focus terugzetten naar het hoofdvenster

Selenium Java CodeMeerdere verwerken 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: De website wordt gelanceerd, de Klik hier De link opent een subtabblad. Selenium Voert het e-mailadres in en verzendt het, sluit het subvenster en keert terug naar het hoofdvenster.

Meerdere vensterverwerking voltooid in Selenium

Conclusie

  • De drie gedefinieerd Selenium Meldingstypen โ€” eenvoudig, prompt en bevestiging โ€” met een schermafbeelding voor elk.
  • Demonstratie van het afhandelen van waarschuwingen met de WebDriver. Alert interface met behulp van een werkend scenario voor het verwijderen van een klant.
  • Meerdere browservensters werden beheerd door handles vast te leggen met getWindowHandle() en getWindowHandles() en ertussen wisselen.

Veelgestelde vragen

Een waarschuwing is een native functie. JavaEen scriptdialoogvenster dat de pagina opschort totdat het is verwerkt. Een pop-upvenster is een nieuw browservenster of tabblad. Waarschuwingen gebruiken switchTo().alert(); pop-ups gebruiken switchTo().window() met de handle die wordt geretourneerd door getWindowHandles().

Er wordt een NoAlertPresentException gegenereerd wanneer switchTo().alert() wordt uitgevoerd, maar er momenteel geen melding wordt weergegeven. Wikkel de aanroep in WebDriverWait totdat ExpectedConditions.alertIsPresent() waar is, zodat de pagina de tijd krijgt om het dialoogvenster te activeren.

Pop-ups voor basisauthenticatie zijn niet standaard. JavaScriptwaarschuwingen. Geef inloggegevens door in de URL (https://user:pass@site.com) of gebruik Selenium 4 CDP Network.setExtraHTTPHeaders. Voor SSO-pop-ups gebruikt u BrowserStack of een geregistreerde hasAuthentication-handler.

AI-assistenten zoals AI Code-copiloten genereren locatiebewuste waarschuwingshandlers, voorspellen benodigde wachttijden en herstructureren kwetsbare XPath-expressies. Ze stellen ook beweringen op voor waarschuwingstekst en subvensters. URLs, versnellend Selenium testcreatie.

Ja. Zelfherstellende testplatformen gebruiken AI om DOM-wijzigingen te detecteren, defecte locators te vervangen en wachttijden aan te passen wanneer waarschuwingen of pop-ups verschuiven. Dit vermindert het onderhoud voor Selenium suites die draaien op front-ends die regelmatig worden bijgewerkt.

Vat dit bericht samen met: