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.
2) Prompt Alert
Si Prompt Alert chiede qualche input all'utente e Selenium il webdriver può inserire il testo utilizzando sendkeys(” input…. “).
3) Confirmation Alert
Questo avviso di conferma chiede l'autorizzazione per eseguire un certo tipo di operazione.
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.
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.
Passo 3) Dopo aver inserito l'ID cliente, fare clic sul pulsante "Invia".
Passo 4) Rifiuta/accetta l'avviso.
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
Passo 2) Cliccare sul link “Clicca qui”.
Quando l'utente fa clic sul collegamento "Fai clic qui", si apre una nuova finestra secondaria.
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.
Passo 4) Inserisci il tuo ID e-mail e invia.
Passo 5) Visualizza le Credenziali di Accesso all'invio della pagina.
Quando esegui il codice, vedrai che la finestra secondaria è aperta in una nuova scheda.
- Chiudere la finestra Figlio in cui vengono visualizzate le credenziali.
- Passa alla finestra principale.
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.
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.