Selenium Gestione degli avvisi e delle finestre popup: come gestirli?

In cosa consiste Alert Selenium?

An Avviso in Selenium è una piccola casella di messaggio che appare sullo schermo per dare all'utente alcune informazioni o notifiche. Notifica all'utente alcune informazioni specifiche o errori, chiede il permesso di eseguire determinate attività e fornisce anche messaggi di avviso.

In questo tutorial impareremo come gestire i popup in Selenium e diversi tipi di avvisi presenti nell'applicazione web Testing. Vedremo anche come gestire Alert in Selenium WebDriver e scopri come accettare e rifiutare l'avviso in base ai tipi di avviso.

Tipi di avvisi in Selenium

1) Simple Alert

La semplice classe di avviso in Selenium visualizza alcune informazioni o avvisi sullo schermo.

Simple Alert

2) Prompt Alert

Si Prompt Alert chiede qualche input all'utente e Selenium il webdriver può inserire il testo utilizzando sendkeys(” input…. “).

Prompt Alert

3) Confirmation Alert

Questo avviso di conferma chiede l'autorizzazione per eseguire un certo tipo di operazione.

Confirmation Alert

Come gestire Alert in Selenium webdriver

L'interfaccia di avviso fornisce i seguenti metodi ampiamente utilizzati in Selenium Webdriver.

1) annullare il licenziamento() // Fare clic sul pulsante "Annulla" dell'avviso.

driver.switchTo().alert().dismiss();

2) non accettare()// Fare clic sul pulsante "OK" dell'avviso.

driver.switchTo().alert().accept();

3) Stringa getText() // Per acquisire il messaggio di avviso.

driver.switchTo().alert().getText();

4) void sendKeys(String stringToSend) // Per inviare alcuni dati alla casella di avviso.

driver.switchTo().alert().sendKeys("Text");

È possibile vedere una serie di metodi di avviso visualizzati come mostrato nella schermata seguente suggerita da Eclipse.

Possiamo facilmente passare all'avviso dalla finestra principale utilizzando Selenium'S .passa a() metodo.

Gestisci avviso in Selenium webdriver

Ora automatizziamo lo scenario indicato di seguito.

In questo scenario, utilizzeremo il sito demo Guru99 per illustrarlo Selenium Gestione degli avvisi.

Passo 1) Avviare il browser Web e aprire il sito https://demo.guru99.com/test/delete_customer.php

Passo 2) Inserisci qualsiasi ID cliente.

Gestisci avviso in Selenium webdriver

Passo 3) Dopo aver inserito l'ID cliente, fare clic sul pulsante "Invia".

Gestisci avviso in Selenium webdriver

Passo 4) Rifiuta/accetta l'avviso.

Gestisci avviso in Selenium webdriver

Gestione degli avvisi in Selenium Webdriver

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  {									
		System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
		WebDriver driver = new ChromeDriver();
	
        
        // Alert Message handling
                    		
        driver.get("https://demo.guru99.com/test/delete_customer.php");			
                            		
     	      	
        driver.findElement(By.name("cusid")).sendKeys("53920");					
        driver.findElement(By.name("submit")).submit();			
        		
        // Switching to Alert        
        Alert alert = driver.switchTo().alert();		
        		
        // Capturing alert message.    
        String alertMessage= driver.switchTo().alert().getText();		
        		
        // Displaying alert message		
        System.out.println(alertMessage);	
        Thread.sleep(5000);
        		
        // Accepting alert		
        alert.accept();		
    }	

}
		

Produzione:

Quando esegui il codice sopra, avvia il sito. Prova a eliminare l'ID cliente gestendo l'avviso di conferma visualizzato sullo schermo, eliminando così l'ID cliente dall'applicazione.

Come gestire la finestra pop-up utilizzando Selenium Webdriver

Nell'automazione, quando abbiamo più finestre in qualsiasi applicazione web, l'attività potrebbe dover cambiare il controllo tra più finestre da una all'altra per completare l'operazione. Dopo il completamento dell'operazione, deve tornare alla finestra principale, ovvero la finestra padre in Selenium. Lo vedremo più avanti nell’articolo con un esempio.

In Selenium web driver esistono metodi attraverso i quali possiamo gestire più finestre.

Driver.getWindowHandles();

Per gestire tutte le finestre aperte dal driver web, possiamo usare “Driver.getWindowHandles()” e poi possiamo cambiare finestra da una finestra all'altra in un'applicazione web. Il suo tipo di ritorno è Iterator .

Driver.getWindowHandle();

Quando il sito si apre, dobbiamo gestire la finestra principale tramite driver.getWindowHandle(). Questo gestirà la finestra corrente che la identifica in modo univoco all'interno di questa istanza del driver. Il suo tipo restituito è String.

Per la gestione delle finestre in Selenium, seguiremo i passaggi seguenti:

Ora, automatizzeremo lo scenario riportato di seguito per vedere come gestire più finestre utilizzando Selenium Webdriver.

In questo scenario, utilizzeremo il sito demo "Guru99" per illustrare la gestione delle finestre.

Passo 1) Avvia il sito.

Avvia il browser e apri il sito https://demo.guru99.com/popup.php

Gestire la finestra pop-up utilizzando Selenium Webdriver

Passo 2) Cliccare sul link “Clicca qui”.

Quando l'utente fa clic sul collegamento "Fai clic qui", si apre una nuova finestra secondaria.

Gestire la finestra pop-up utilizzando Selenium Webdriver

Passo 3) Si apre la nuova finestra secondaria.

Si apre una nuova finestra, in cui viene chiesto all'utente di inserire l'ID e-mail e di inviare la pagina.

Gestire la finestra pop-up utilizzando Selenium Webdriver

Passo 4) Inserisci il tuo ID e-mail e invia.

Gestire la finestra pop-up utilizzando Selenium Webdriver

Passo 5) Visualizza le Credenziali di Accesso all'invio della pagina.

Gestire la finestra pop-up utilizzando Selenium Webdriver

Quando esegui il codice, vedrai che la finestra secondaria è aperta in una nuova scheda.

  1. Chiudere la finestra Figlio in cui vengono visualizzate le credenziali.

Gestire la finestra pop-up utilizzando Selenium Webdriver

  1. Passa alla finestra principale.

Gestire la finestra pop-up utilizzando Selenium Webdriver

Come gestire più Windows in Selenium

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 {									
        	WebDriver driver=new FirefoxDriver();			
        		
        //Launching the site.				
            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();		
        		
        // To handle all new opened window.				
            Set<String> s1=driver.getWindowHandles();		
        Iterator<String> i1=s1.iterator();		
        		
        while(i1.hasNext())			
        {		
            String ChildWindow=i1.next();		
            		
            if(!MainWindow.equalsIgnoreCase(ChildWindow))			
            {    		
                 
                    // Switching to Child window
                    driver.switchTo().window(ChildWindow);	                                                                                                           
                    driver.findElement(By.name("emailid"))
                    .sendKeys("gaurav.3n@gmail.com");                			
                    
                    driver.findElement(By.name("btnLogin")).click();			
                                 
			// Closing the Child Window.
                        driver.close();		
            }		
        }		
        // Switching to Parent window i.e Main Window.
            driver.switchTo().window(MainWindow);				
    }
}		

Produzione:

Quando esegui il codice sopra, avvia il sito e facendo clic sul collegamento "Fai clic qui", si apre una finestra secondaria in una nuova scheda. È possibile chiudere la finestra secondaria e passare alla finestra principale una volta completata l'operazione. Quindi gestire più di una finestra nell'applicazione.

Gestione di più finestre Selenium
Gestione di più finestre Selenium

Conclusione

  • Abbiamo definito le tipologie di alert e le abbiamo mostrate con uno screenshot.
  • Dimostrazione della gestione dell'avviso con Selenium WebDriver utilizzando uno scenario particolare.
  • Gestito più finestre con Selenium WebDriver utilizzando uno scenario particolare.

Per saperne di più leggi di più