Come gestire avvisi e popup in Selenium?

โšก Riepilogo intelligente

Avvisi e popup in Selenium sono JavaFinestre di dialogo e finestre secondarie degli script che bloccano il flusso di automazione. Questo articolo spiega come identificare avvisi semplici, di richiesta e di conferma, passare a essi con WebDriver e gestire piรน finestre utilizzando getWindowHandles().

  • ๐Ÿ”” Definizione di base: A Selenium l'allerta รจ un JavaSopra la pagina viene visualizzata una finestra di dialogo di script che deve essere gestita prima di procedere con ulteriori azioni.
  • ๐Ÿ—‚๏ธ Tre tipi di avviso: Le opzioni Semplice (informazioni), Richiesta (inserimento di testo) e Conferma (Sรฌ/No) richiedono ciascuna chiamate WebDriver diverse.
  • ๏ธ API di avviso: Utilizza driver.switchTo().alert() con accept(), dismiss(), getText() e sendKeys() per interagire con la finestra di dialogo.
  • ๐ŸชŸ Gestione delle finestre: getWindowHandle() restituisce l'ID della finestra corrente; getWindowHandles() restituisce l'intero Set per il passaggio tra le finestre.
  • ๐Ÿš€ Selenium Nota 4: Selenium Il gestore risolve automaticamente i driver, eliminando la necessitร  di specificare manualmente i percorsi di chromedriver.exe.
  • ๐Ÿค– Assistenza AI: Gli agenti di intelligenza artificiale generano script di avviso e di finestra basati sulla posizione, riducendo la necessitร  di interventi manuali nelle suite di test.

Come gestire avvisi e popup in Selenium

Che cos'รจ un avviso in Selenium?

An Avviso in Selenium รจ un piccolo JavaFinestra di dialogo script che appare sullo schermo per fornire all'utente informazioni o notifiche. Puรฒ confermare un'azione specifica, richiedere l'autorizzazione per eseguire un'operazione o visualizzare un messaggio di avviso.

In questo tutorial imparerai come gestire i popup in Selenium e i diversi tipi di avvisi presenti nelle applicazioni web analisiVedremo anche come gestire un avviso in Selenium WebDriver e come accettarlo o rifiutarlo a seconda del tipo di avviso.

Tipi di avvisi in Selenium

JavaLo script espone tre finestre di dialogo di avviso che Selenium deve essere gestito in modo diverso.

1) Simple Alert

Il semplice avviso visualizza informazioni o un avviso sullo schermo. L'utente puรฒ confermarlo solo cliccando OK.

Esempio semplice di finestra di dialogo di avviso nel browser

2) Prompt Alert

Il messaggio di avviso richiede all'utente di inserire un input. Selenium WebDriver puรฒ digitarlo utilizzando sendKeys("input...").

Finestra di dialogo di avviso con campo di input

3) Confirmation Alert

L'avviso di conferma chiede all'utente di approvare o annullare un'operazione. Espone entrambi OK and Annulla pulsanti.

Finestra di dialogo di conferma con pulsanti OK e Annulla

Come gestire un avviso in Selenium webdriver

Migliori Alert interfaccia in Selenium webdriver Vengono illustrati quattro metodi che coprono ogni interazione di avviso.

  1. annullare il licenziamento() โ€” clicca il Annulla pulsante.
driver.switchTo().alert().dismiss();
  1. non accettare() โ€” clicca il OK pulsante.
driver.switchTo().alert().accept();
  1. Stringa getText() โ€” cattura il messaggio di avviso.
driver.switchTo().alert().getText();
  1. void sendKeys(String stringToSend) โ€” digita il testo in un prompt di avviso.
driver.switchTo().alert().sendKeys("Text");

Eclipse autocomplete mostra i metodi di avviso disponibili dopo typing alert. sulla riga dell'editor. Passa dalla finestra principale all'avviso in qualsiasi momento utilizzando Selenium'S .passa a() metodo.

Eclipse completamento automatico che mostra i metodi di gestione degli avvisi

Esempio funzionante: Elimina la demo del cliente

Automatizziamo il seguente scenario. Useremo il Guru99 siti dimostrativi per illustrare Selenium gestione degli avvisi.

Passo 1) Avvia il browser e apri https://demo.guru99.com/test/delete_customer.php.

Passo 2) Inserisci un ID cliente qualsiasi.

Elimina la pagina demo del cliente con il campo ID cliente

Passo 3) Clicca su Invio pulsante.

Fai clic sul pulsante Invia per attivare l'avviso di conferma.

Passo 4) Accetta o ignora l'avviso di conferma risultante.

Avviso di conferma attivato dall'azione di eliminazione

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

Produzione: Il browser apre la pagina Elimina cliente, inserisce l'ID cliente, accetta la notifica di conferma e rimuove il record dall'applicazione demo.

Come gestire i popup Windows in Selenium webdriver

Quando l'automazione deve funzionare su piรน finestre del browser, il test deve passare da una finestra all'altra e tornare alla finestra principale dopo ogni operazione. Selenium WebDriver mette a disposizione due metodi che rendono possibile tutto ciรฒ.

driver.getWindowHandles()

Restituisce un file Set<String> di ogni handle di finestra aperta. Itera sull'insieme per passare dalla finestra principale a qualsiasi finestra secondaria nell'applicazione.

driver.getWindowHandle()

Restituisce un file String con l'handle univoco della finestra corrente. Catturalo prima di aprire qualsiasi finestra secondaria in modo da poter tornare alla finestra principale in seguito.

Segui questi passaggi per dimostrare la gestione delle finestre rispetto a Guru99 demo popup.

Esempio pratico: commutazione delle finestre

Passo 1) Avvia il browser e apri https://demo.guru99.com/popup.php.

Guru99 pagine di destinazione demo popup

Passo 2) Clicca su Clicca qui collegamento. Si apre una nuova finestra secondaria.

Apertura della finestra per bambini (clicca qui)

Passo 3) La finestra secondaria chiede all'utente di inserire un indirizzo e-mail e di inviare il modulo.

Modulo di inserimento e-mail per la finestra del bambino

Passo 4) Inserisci l'indirizzo email e invia.

Invio dell'e-mail all'interno della finestra del bambino

Passo 5) La pagina visualizza le credenziali di accesso restituite dalla demo.

Le credenziali di accesso vengono visualizzate nella finestra secondaria.

Dopo la visualizzazione delle credenziali:

  1. Chiudi la finestra del bambino.

Chiudere la finestra secondaria nel browser

  1. Riportare il focus sulla finestra principale.

Riportare il focus alla finestra principale.

Selenium Java Code: Gestisci piรน 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();
    }
}

Produzione: Il sito viene lanciato, il CLICCA QUI il link apre una scheda secondaria, Selenium inserisce l'indirizzo email e lo invia, chiude la finestra secondaria e torna alla finestra principale.

Gestione di piรน finestre completata in Selenium

Conclusione

  • Definiti i tre Selenium Tipi di avviso: semplice, a richiesta e di conferma, con una schermata per ciascuno.
  • Gestione degli avvisi dimostrata con WebDriver Alert interfaccia utilizzando uno scenario funzionante di eliminazione cliente.
  • Gestisce piรน finestre del browser catturando gli handle con getWindowHandle() and getWindowHandles() e passando dall'uno all'altro.

DOMANDE FREQUENTI

Un avviso รจ nativo JavaFinestra di dialogo script che sospende la pagina fino a quando non viene gestita. Una finestra popup รจ una nuova finestra o scheda del browser. Gli avvisi utilizzano switchTo().alert(); i popup utilizzano switchTo().window() con l'handle restituito da getWindowHandles().

Viene generata un'eccezione NoAlertPresentException quando viene eseguito switchTo().alert() ma non viene visualizzato alcun avviso. Avvolgere la chiamata con WebDriverWait finchรฉ ExpectedConditions.alertIsPresent() non รจ true per dare alla pagina il tempo di attivare la finestra di dialogo.

I popup di autenticazione di base non sono standard JavaAvvisi di script. Passa le credenziali nel URL (https://user:pass@site.com) oppure usa Selenium 4 CDP Network.setExtraHTTPHeaders. Per i popup SSO, utilizzare BrowserStack o un gestore hasAuthentication registrato.

Assistenti IA come AI I copiloti del codice generano gestori di avvisi consapevoli del localizzatore, prevedono i tempi di attesa necessari e rifattorizzano XPath fragili. Inoltre, redigono asserzioni per il testo dell'avviso e la finestra secondaria. URLs, accelerando Selenium creazione del test.

Sรฌ. Le piattaforme di test auto-riparanti utilizzano l'IA per rilevare le modifiche del DOM, sostituire i localizzatori danneggiati e regolare le attese quando gli avvisi o i popup cambiano. Ciรฒ riduce la manutenzione per Selenium suite in esecuzione su interfacce utente frequentemente aggiornate.

Riassumi questo post con: