Kako se nositi s upozorenjima i skočnim prozorima u Selenium?

⚡ Pametni sažetak

Obavijesti i skočni prozori u Selenium ima JavaDijalozi skripti i podređeni prozori koji blokiraju tijek automatizacije. Ovaj članak objašnjava kako prepoznati jednostavna, upitna i potvrdna upozorenja, prebaciti se na njih pomoću WebDrivera i upravljati više prozora pomoću getWindowHandles().

  • 🔔 Osnovna definicija: A Selenium upozorenje je JavaDijalog skripte prikazan iznad stranice koji se mora obraditi prije daljnjih radnji.
  • 🗂️ Tri vrste upozorenja: Jednostavno (info), upit (unos teksta) i potvrda (Da/Ne) zahtijevaju različite pozive WebDrivera.
  • 🛠️ API za upozorenja: Koristite driver.switchTo().alert() s accept(), dismiss(), getText() i sendKeys() za interakciju s dijalogom.
  • 🪟 Rukovanje prozorima: getWindowHandle() vraća trenutni ID prozora; getWindowHandles() vraća cijeli skup za prebacivanje.
  • 🚀 Selenium Napomena 4: Selenium Upravitelj automatski razrješava upravljačke programe, uklanjajući potrebu za čvrsto kodiranim putanjama chromedriver.exe.
  • 🤖 AI pomoć: AI agenti generiraju skripte upozorenja i prozora koje su svjesne lokatora, smanjujući ručno scaffolding u testnim paketima.

Kako se nositi s upozorenjima i skočnim prozorima u Selenium

Što je upozorenje u Selenium?

An Upozorenje u Selenium je mali JavaDijaloški okvir skripte koji se pojavljuje na zaslonu kako bi korisniku pružio neke informacije ili obavijesti. Može potvrditi određenu radnju, zatražiti dopuštenje za izvođenje operacije ili prikazati poruku upozorenja.

U ovom tutorialu naučit ćete kako se nositi sa skočnim prozorima u Selenium i različite vrste upozorenja koje se nalaze u web aplikaciji testiranjeTakođer ćemo vidjeti kako postupati s upozorenjem u Selenium WebDriver i kako ga prihvatiti ili odbiti ovisno o vrsti upozorenja.

Vrste upozorenja u Selenium

JavaSkripta prikazuje tri dijaloga upozorenja koja Selenium mora se drugačije postupati.

1) Simple Alert

Jednostavno upozorenje prikazuje informacije ili upozorenje na zaslonu. Korisnik ga može potvrditi samo klikom OK.

Primjer jednostavnog dijaloga upozorenja u pregledniku

2) Prompt Alert

Upozorenje traži od korisnika unos. Selenium WebDriver može upisati u njega pomoću sendKeys("input...").

Dijalog upozorenja s poljem za unos

3) Confirmation Alert

Upozorenje o potvrdi traži od korisnika da odobri ili otkaže operaciju. Izlaže oboje OK i Otkazati tipke.

Dijalog upozorenja za potvrdu s gumbima U redu i Odustani

Kako postupiti s upozorenjem u Selenium webdriver

The Alert sučelje u Selenium webdriver otkriva četiri metode koje pokrivaju svaku interakciju upozorenja.

  1. void dismiss() — klikne na Otkazati tipku.
driver.switchTo().alert().dismiss();
  1. nevažeći prihvatiti() — klikne na OK tipku.
driver.switchTo().alert().accept();
  1. Niz getText() — bilježi poruku upozorenja.
driver.switchTo().alert().getText();
  1. void sendKeys(string stringToSend) — upisuje tekst u upozorenje.
driver.switchTo().alert().sendKeys("Text");

Eclipse automatsko dovršavanje prikazuje dostupne metode upozorenja nakon typing alert. u redak za uređivanje. Prebacite se iz glavnog prozora u upozorenje u bilo kojem trenutku pomoću Selenium'S .prebaciti na() metoda.

Eclipse automatsko dovršavanje koje prikazuje metode rukovanja upozorenjima

Obrađeni primjer: Brisanje demo verzije kupca

Automatizirajmo sljedeći scenarij. Koristit ćemo Guru99 demo stranica za ilustraciju Selenium rukovanje upozorenjima.

Korak 1) Pokrenite preglednik i otvorite https://demo.guru99.com/test/delete_customer.php.

Korak 2) Unesite bilo koji ID korisnika.

Izbriši demo stranicu kupca s poljem ID kupca

Korak 3) kliknite Procjena tipku.

Gumb za slanje za pokretanje upozorenja o potvrdi

Korak 4) Prihvatite ili odbacite rezultirajuće upozorenje o potvrdi.

Upozorenje o potvrdi pokrenuto radnjom brisanja

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

Izlaz: Preglednik otvara stranicu Brisanje kupca, šalje ID kupca, prihvaća upozorenje o potvrdi i uklanja zapis iz demo aplikacije.

Kako se nositi sa skočnim prozorom Windows in Selenium webdriver

Kada automatizacija mora raditi u više prozora preglednika, test mora prebacivati ​​fokus između njih i vraćati se na roditeljski prozor nakon svake operacije. Selenium WebDriver nudi dvije metode koje to omogućuju.

driver.getWindowHandles()

Vraća Set<String> svakog otvorenog ručka prozora. Iterirajte kroz skup kako biste prešli s glavnog prozora na bilo koji podređeni prozor u aplikaciji.

driver.getWindowHandle()

Vraća String s jedinstvenim identifikatorom trenutnog prozora. Snimite ovo prije otvaranja bilo kojeg podređenog prozora kako biste se kasnije mogli vratiti na roditeljski prozor.

Slijedite ove korake kako biste demonstrirali rukovanje prozorima u odnosu na Guru99 skočnih demonstracija.

Primjer obrade: Prebacivanje prozora

Korak 1) Pokrenite preglednik i otvorite https://demo.guru99.com/popup.php.

Guru99 skočnih demo odredišnih stranica

Korak 2) kliknite Klikni ovdje poveznica. Otvara se novi podređeni prozor.

Podređeni prozor se otvara putem poveznice Klikni ovdje

Korak 3) Podređeni prozor traži od korisnika da unese ID e-pošte i pošalje.

Obrazac za unos e-pošte u podređenom prozoru

Korak 4) Unesite ID e-pošte i pošaljite.

Slanje e-pošte unutar podređenog prozora

Korak 5) Stranica prikazuje pristupne vjerodajnice koje je vratila demonstracija.

Pristupne vjerodajnice prikazane u podređenom prozoru

Nakon prikaza vjerodajnica:

  1. Zatvori podređeni prozor.

Zatvaranje podređenog prozora u pregledniku

  1. Vrati fokus na roditeljski prozor.

Vraćanje fokusa na roditeljski prozor

Selenium Java CodeObrada višestrukih 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();
    }
}

Izlaz: Stranica se pokreće, Kliknite ovdje poveznica otvara podređenu karticu, Selenium unosi e-poštu i šalje je, zatvara podređeni prozor i vraća se roditelju.

Višestruka obrada prozora završena je u Selenium

Zaključak

  • Definirao je trojicu Selenium vrste upozorenja - jednostavna, brza i potvrdna - sa snimkom zaslona za svaku.
  • Demonstrirano rukovanje upozorenjima pomoću WebDrivera Alert sučelje pomoću radnog scenarija brisanja korisnika.
  • Obrađivao je više prozora preglednika hvatanjem ručki s getWindowHandle() i getWindowHandles() i prebacivanje između njih.

Pitanja i odgovori

Upozorenje je izvorno JavaDijalog skripte koji obustavlja stranicu dok se ne obradi. Skočni prozor je novi prozor ili kartica preglednika. Upozorenja koriste switchTo().alert(); skočni prozori koriste switchTo().window() s handleom koji vraća getWindowHandles().

Iznimka NoAlertPresentException se izbacuje kada se switchTo().alert() pokrene, ali trenutno nije prikazano upozorenje. Poziv se završava s WebDriverWait dok ExpectedConditions.alertIsPresent() ne postane true kako bi se stranici dalo vremena za pokretanje dijaloga.

Skočni prozori za osnovnu autentifikaciju nisu standardni JavaObavijesti o skriptama. Proslijedite vjerodajnice u URL (https://user:pass@site.com) ili koristite Selenium 4 CDP Network.setExtraHTTPHeaders. Za SSO skočne prozore koristite BrowserStack ili registrirani rukovatelj hasAuthentication.

AI asistenti kao što su AI Kopiloti koda generiraju rukovatelje upozorenjima koji su svjesni lokatora, predviđaju potrebna čekanja i refaktoriraju krhki XPath. Također izrađuju tvrdnje za tekst upozorenja i podređeni prozor. URLs, ubrzava Selenium stvaranje testa.

Da. Platforme za testiranje s mogućnošću samoobnavljanja koriste umjetnu inteligenciju za otkrivanje promjena DOM-a, zamjenu neispravnih lokatora i prilagođavanje čekanja kada se promijene upozorenja ili skočni prozori. To smanjuje održavanje za Selenium paketi koji se izvode na često ažuriranim prednjim dijelovima.

Sažmite ovu objavu uz: