Jak radzić sobie z alertami i wyskakującymi okienkami w Selenium?

⚡ Inteligentne podsumowanie

Alerty i wyskakujące okienka w Selenium jest JavaDialogi skryptów i okna podrzędne blokujące przepływ automatyzacji. W tym artykule wyjaśniono, jak identyfikować alerty proste, monity i potwierdzenia, przełączać się między nimi za pomocą WebDriver oraz zarządzać wieloma oknami za pomocą getWindowHandles().

  • 🔔 Definicja podstawowa: A Selenium alert jest JavaOkno dialogowe skryptu wyświetlane nad stroną, które musi zostać obsłużone przed podjęciem dalszych działań.
  • 🗂️. Trzy typy alertów: Opcje Simple (informacje), Prompt (wprowadzanie tekstu) i Confirmation (Tak/Nie) wymagają różnych wywołań WebDriver.
  • 🛠️. API alertów: Użyj driver.switchTo().alert() z accept(), discard(), getText() i sendKeys(), aby wchodzić w interakcję z oknem dialogowym.
  • 🪟 Obsługa okien: getWindowHandle() zwraca bieżący identyfikator okna; getWindowHandles() zwraca pełny zestaw do przełączenia.
  • 🚀 Selenium 4 Uwaga: Selenium Menedżer automatycznie rozwiązuje problemy ze sterownikami, eliminując potrzebę zakodowania ścieżek chromedriver.exe na stałe.
  • 🤖 Pomoc AI: Agenci AI generują alerty i skrypty okien uwzględniające lokalizację, redukując ręczną pracę w zestawach testowych.

Jak radzić sobie z alertami i wyskakującymi okienkami w Selenium

Czym jest alert w Selenium?

An Alarm w Selenium jest małe JavaOkno dialogowe skryptu, które pojawia się na ekranie, aby przekazać użytkownikowi pewne informacje lub powiadomienie. Może ono potwierdzić określoną czynność, poprosić o pozwolenie na wykonanie operacji lub wyświetlić komunikat ostrzegawczy.

W tym samouczku dowiesz się, jak radzić sobie z wyskakującymi okienkami w Selenium i różne rodzaje alertów dostępnych w aplikacjach internetowych testowanie. Zobaczymy również, jak poradzić sobie z alertem w Selenium WebDriver i sposób jego akceptacji lub odrzucenia w zależności od typu alertu.

Rodzaje alertów w Selenium

JavaSkrypt udostępnia trzy okna dialogowe z alertami, które: Selenium musimy sobie radzić inaczej.

1) Simple Alert

Prosty alert wyświetla na ekranie informacje lub ostrzeżenie. Użytkownik może potwierdzić jego działanie, klikając OK.

Przykład prostego okna dialogowego alertu w przeglądarce

2) Prompt Alert

Alert prosi użytkownika o podanie danych. Selenium WebDriver może do niego pisać za pomocą sendKeys("input...").

Okno dialogowe z alertem i polem wprowadzania danych

3) Confirmation Alert

Alert potwierdzający prosi użytkownika o zatwierdzenie lub anulowanie operacji. Ujawnia on zarówno OK oraz Anuluj przyciski.

Okno dialogowe z ostrzeżeniem o potwierdzeniu i przyciskami OK i Anuluj

Jak poradzić sobie z alertem w Selenium Sterownik sieciowy

Alert interfejs w Selenium Sterownik sieciowy udostępnia cztery metody obejmujące każdą interakcję z alertem.

  1. nieważne zwolnienie() — klika Anuluj przycisk.
driver.switchTo().alert().dismiss();
  1. unieważnij akceptację() — klika OK przycisk.
driver.switchTo().alert().accept();
  1. Ciąg getText() — przechwytuje komunikat ostrzegawczy.
driver.switchTo().alert().getText();
  1. void sendKeys(Ciąg stringToSend) — wpisuje tekst do alertu.
driver.switchTo().alert().sendKeys("Text");

Eclipse funkcja autouzupełniania pokazuje dostępne metody alertów poping alert. w wierszu edytora. Możesz w dowolnym momencie przełączyć się z okna głównego do alertu za pomocą Selenium'S .Przełącz na() Metoda.

Eclipse autouzupełnianie pokazujące metody obsługi alertów

Przykład rozwiązania: Usuwanie wersji demonstracyjnej klienta

Zautomatyzujmy następujący scenariusz. Użyjemy Guru99 witryna demonstracyjna do zilustrowania Selenium obsługa alertów.

Krok 1) Uruchom przeglądarkę i otwórz https://demo.guru99.com/test/delete_customer.php.

Krok 2) Wprowadź dowolny identyfikator klienta.

Usuń stronę demonstracyjną klienta z polem ID klienta

Krok 3) Kliknij ikonę Wyślij przycisk.

Przycisk Wyślij, aby wywołać alert potwierdzenia

Krok 4) Zaakceptuj lub odrzuć wyświetlony alert potwierdzający.

Alert potwierdzający wyzwolony przez akcję usuwania

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

Wyjście: Przeglądarka otwiera stronę Usuń klienta, przesyła identyfikator klienta, akceptuje alert potwierdzający i usuwa rekord z aplikacji demonstracyjnej.

Jak radzić sobie z wyskakującymi okienkami Windows in Selenium Sterownik sieciowy

Gdy automatyzacja musi działać w wielu oknach przeglądarki, test musi przełączać się między nimi i powracać do okna nadrzędnego po każdej operacji. Selenium WebDriver udostępnia dwie metody, które to umożliwiają.

driver.getWindowHandles()

Zwraca a Set<String> każdego uchwytu otwartego okna. Przechodź przez zestaw, aby przełączać się z okna głównego na dowolne okno podrzędne w aplikacji.

sterownik.getWindowHandle()

Zwraca a String z unikalnym uchwytem bieżącego okna. Zapisz to przed otwarciem dowolnego okna podrzędnego, aby móc później wrócić do okna nadrzędnego.

Aby zademonstrować obsługę okna, wykonaj poniższe kroki Guru99 wyskakujących demonstracji.

Przykład pracy: przełączanie okien

Krok 1) Uruchom przeglądarkę i otwórz https://demo.guru99.com/popup.php.

Guru99-wyskakująca strona docelowa z demo

Krok 2) Kliknij ikonę Kliknij tutaj link. Otworzy się nowe okno podrzędne.

Otwieranie okna podrzędnego za pomocą łącza Kliknij tutaj

Krok 3) W oknie podrzędnym wyświetlany jest monit o podanie adresu e-mail i przesłanie go.

Formularz wprowadzania wiadomości e-mail w oknie podrzędnym

Krok 4) Wprowadź adres e-mail i wyślij.

Wysyłanie wiadomości e-mail w oknie podrzędnym

Krok 5) Na stronie wyświetlane są dane uwierzytelniające zwrócone przez wersję demonstracyjną.

Dane uwierzytelniające wyświetlane w oknie podrzędnym

Po wyświetleniu danych uwierzytelniających:

  1. Zamknij okno podrzędne.

Zamykanie okna podrzędnego w przeglądarce

  1. Powróć do okna nadrzędnego.

Ponowne przełączenie fokusu na okno nadrzędne

Selenium Java Code:Obsługa wielu 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();
    }
}

Wyjście: Strona zostaje uruchomiona, Kliknij tutaj link otwiera kartę podrzędną, Selenium wprowadza adres e-mail i go wysyła, zamyka okno podrzędne i wraca do okna nadrzędnego.

Obsługa wielu okien zakończona Selenium

Wniosek

  • Zdefiniowano trzy Selenium rodzaje alertów — prosty, natychmiastowy i potwierdzający — ze zrzutem ekranu dla każdego z nich.
  • Zaprezentowano obsługę alertów za pomocą WebDriver Alert interfejs wykorzystujący działający scenariusz usuwania klienta.
  • Obsługiwano wiele okien przeglądarki poprzez przechwytywanie uchwytów za pomocą getWindowHandle() oraz getWindowHandles() i przełączanie się między nimi.

FAQ

Alert jest natywny JavaOkno dialogowe skryptu, które zawiesza stronę do momentu obsłużenia. Okno pop-up to nowe okno przeglądarki lub karta. Alerty używają switchTo().alert(); wyskakujące okienka używają switchTo().window() z uchwytem zwróconym przez getWindowHandles().

Wyjątek NoAlertPresentException jest zgłaszany, gdy switchTo().alert() jest uruchamiany, ale obecnie nie jest wyświetlany żaden alert. Otocz wywołanie funkcją WebDriverWait, aż ExpectedConditions.alertIsPresent() będzie miało wartość true, aby dać stronie czas na wyzwolenie okna dialogowego.

Okienka podręczne uwierzytelniania podstawowego nie są standardowe JavaAlerty skryptu. Podaj dane uwierzytelniające w URL (https://user:pass@site.com) lub użyj Selenium 4. CDP Network.setExtraHTTPHeaders. W przypadku wyskakujących okienek SSO użyj BrowserStack lub zarejestrowanego handlera hasAuthentication.

Asystenci AI, tacy jak AI Kopiloci kodu generują procedury obsługi alertów uwzględniające lokalizację, przewidują wymagane oczekiwania i refaktoryzują kruchy XPath. Tworzą również asercje dla tekstu alertu i okna podrzędnego. URLs, przyspieszając Selenium tworzenie testów.

Tak. Samonaprawiające się platformy testowe wykorzystują sztuczną inteligencję do wykrywania zmian w DOM, zamiany uszkodzonych lokalizatorów i dostosowywania czasu oczekiwania na zmiany alertów lub wyskakujących okienek. Zmniejsza to koszty konserwacji. Selenium pakiety działające w oparciu o często aktualizowane interfejsy użytkownika.

Podsumuj ten post następująco: