Cum să gestionezi alertele și ferestrele popup în Selenium?

⚡ Rezumat inteligent

Alerte și ferestre pop-up în Selenium sunt JavaDialoguri de dialog script și ferestre secundare care blochează fluxul de automatizare. Acest articol explică cum să identificați alertele simple, prompte și de confirmare, să comutați la ele cu WebDriver și să gestionați mai multe ferestre folosind getWindowHandles().

  • 🔔 Definiția de bază: A Selenium alerta este o JavaCaseta de dialog script redată deasupra paginii, care trebuie gestionată înainte de acțiuni ulterioare.
  • 🗂️ Trei tipuri de alerte: Simplu (info), Prompt (introducere text) și Confirmare (Da/Nu) necesită fiecare apeluri WebDriver diferite.
  • 🛠️ API-ul de alerte: Folosește driver.switchTo().alert() cu accept(), dismiss(), getText() și sendKeys() pentru a interacționa cu dialogul.
  • 🪟 Manipularea ferestrelor: getWindowHandle() returnează ID-ul curent al ferestrei; getWindowHandles() returnează setul complet pentru comutare.
  • 🚀 Selenium 4 Notă: Selenium Manager rezolvă automat driverele, eliminând necesitatea căilor chromedriver.exe codificate hard.
  • 🤖 Asistență AI: Agenții AI generează alerte și scripturi de ferestre care depind de localizare, reducând scheletarea manuală în suitele de testare.

Cum să gestionezi alertele și ferestrele popup în Selenium

Ce este o alertă în Selenium?

An Alertă în Selenium este un mic JavaCasetă de dialog script care apare pe ecran pentru a oferi utilizatorului informații sau notificări. Poate confirma o anumită acțiune, poate solicita permisiunea de a efectua o operațiune sau poate afișa un mesaj de avertizare.

În acest tutorial, veți învăța cum să gestionați ferestrele pop-up în Selenium și diferitele tipuri de alerte găsite în aplicațiile web de testareVom vedea, de asemenea, cum se gestionează o alertă în Selenium WebDriver și cum să îl acceptați sau să îl respingeți în funcție de tipul de alertă.

Tipuri de alerte în Selenium

JavaScriptul expune trei dialoguri de alertă care Selenium trebuie să se comporte diferit.

1) Simple Alert

Alerta simplă afișează informații sau un avertisment pe ecran. Utilizatorul o poate confirma doar făcând clic pe OK.

Exemplu simplu de dialog de alertă în browser

2) Prompt Alert

Alerta promptă solicită utilizatorului să introducă date. Selenium WebDriver poate tasta în el folosind sendKeys("input...").

Casetă de dialog de alertă promptă cu câmp de introducere a datelor

3) Confirmation Alert

Alerta de confirmare solicită utilizatorului să aprobe sau să anuleze o operațiune. Expune ambele OK și Anulare butoane.

Casetă de dialog de alertă de confirmare cu butoanele OK și Anulare

Cum să gestionezi o alertă în Selenium webdriver

Alert interfață în Selenium webdriver expune patru metode care acoperă fiecare interacțiune de alertă.

  1. anulează respingerea () — face clic pe Anulare butonul.
driver.switchTo().alert().dismiss();
  1. void accept() — face clic pe OK butonul.
driver.switchTo().alert().accept();
  1. String getText() — capturează mesajul de alertă.
driver.switchTo().alert().getText();
  1. void sendKeys(String șirToSend) — tastează text într-o alertă promptă.
driver.switchTo().alert().sendKeys("Text");

Eclipse Completarea automată afișează metodele de alertă disponibile după typing alert. pe linia editorului. Comutați oricând din fereastra principală în alertă folosind Selenium'S .schimba cu() metodă.

Eclipse completare automată care afișează metodele de gestionare a alertelor

Exemplu funcțional: Ștergere demonstrație client

Să automatizăm următorul scenariu. Vom folosi Guru99 de site-uri demonstrative pentru ilustrare Selenium gestionarea alertelor.

Pas 1) Lansați browserul și deschideți https://demo.guru99.com/test/delete_customer.php.

Pas 2) Introduceți orice ID de client.

Ștergeți pagina demonstrativă a clientului cu câmpul ID client

Pas 3) Apasă pe Trimite butonul.

Butonul Trimite pentru a declanșa alerta de confirmare

Pas 4) Acceptați sau respingeți alerta de confirmare rezultată.

Alertă de confirmare declanșată de acțiunea de ștergere

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

ieșire: Browserul deschide pagina Ștergere client, trimite ID-ul clientului, acceptă alerta de confirmare și elimină înregistrarea din aplicația demo.

Cum se gestionează ferestrele pop-up Windows in Selenium webdriver

Când automatizarea trebuie să funcționeze în mai multe ferestre de browser, testul trebuie să comute între ele și să revină la fereastra părinte după fiecare operațiune. Selenium WebDriver prezintă două metode care fac acest lucru posibil.

driver.getWindowHandles()

Returnează a Set<String> a fiecărui handle de fereastră deschisă. Iterați peste mulțime pentru a comuta de la fereastra principală la orice fereastră copil din aplicație.

driver.getWindowHandle()

Returnează a String cu identificatorul unic al ferestrei curente. Capturați acest lucru înainte de a deschide orice fereastră copil, astfel încât să puteți reveni la fereastră părinte mai târziu.

Urmați acești pași pentru a demonstra gestionarea ferestrelor în raport cu GuruDemonstrație pop-up cu 99 de opțiuni.

Exemplu lucrat: Comutarea ferestrelor

Pas 1) Lansați browserul și deschideți https://demo.guru99.com/popup.php.

Guru99 de pagini de destinație demonstrative pop-up

Pas 2) Apasă pe Click aici link. Se deschide o nouă fereastră secundară.

Deschiderea ferestrei copil de la linkul Click Here

Pas 3) Fereastra secundară solicită utilizatorului să introducă un ID de e-mail și să îl trimită.

Formular de introducere a e-mailului în fereastră secundară

Pas 4) Introduceți adresa de e-mail și trimiteți.

Trimiterea e-mailului în fereastra copil

Pas 5) Pagina afișează credențialele de acces returnate de demonstrație.

Acreditările de acces afișate în fereastra secundară

După afișarea acreditărilor:

  1. Închideți fereastra copilului.

Închiderea ferestrei copil în browser

  1. Reduceți focalizarea la fereastra părinte.

Revenirea focalizării la fereastra părinte

Selenium Java CodeGestionare multiple 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();
    }
}

ieșire: Se lansează site-ul, Click aici linkul deschide o filă secundară, Selenium introduce e-mailul și îl trimite, închide fereastra copil și revine la fereastra părinte.

Gestionarea mai multor ferestre finalizată în Selenium

Concluzie

  • A definit cele trei Selenium tipuri de alerte — simple, prompte și de confirmare — cu o captură de ecran pentru fiecare.
  • Gestionarea alertelor demonstrată cu WebDriver Alert interfață folosind un scenariu funcțional de ștergere a clientului.
  • Gestionarea mai multor ferestre de browser prin capturarea handle-urilor cu getWindowHandle() și getWindowHandles() și comutarea între ele.

Întrebări frecvente

O alertă este nativă JavaDialog script care suspendă pagina până la gestionarea acesteia. O fereastră popup este o fereastră sau o filă nouă a browserului. Alertele utilizează switchTo().alert(); ferestrele popup utilizează switchTo().window() cu identificatorul returnat de getWindowHandles().

Excepția NoAlertPresentException este generată atunci când switchTo().alert() rulează, dar în prezent nu este afișată nicio alertă. Încheiați apelul cu WebDriverWait până când ExpectedConditions.alertIsPresent() este true pentru a da paginii timp să declanșeze dialogul.

Ferestrele pop-up de autentificare de bază nu sunt standard JavaAlerte script. Transmiteți acreditările în URL (https://user:pass@site.com) sau utilizați Selenium 4 CDP Network.setExtraHTTPHeaders. Pentru ferestrele pop-up SSO, utilizați BrowserStack sau un handler hasAuthentication înregistrat.

Asistenți AI, cum ar fi AI Copiloții de cod generează gestionare a alertelor sensibile la locator, prevăd așteptările necesare și refactorizează XPath fragil. De asemenea, ei redactează aserțiuni pentru textul alertelor și fereastra copil. URLs, accelerând Selenium crearea testului.

Da. Platformele de testare cu auto-reparare utilizează inteligența artificială pentru a detecta modificările DOM, a schimba locatorii defecți și a ajusta așteptările atunci când alertele sau ferestrele pop-up se schimbă. Acest lucru reduce întreținerea pentru Selenium suite care rulează pe front-end-uri actualizate frecvent.

Rezumați această postare cu: