Selenium Gestion des alertes et des fenêtres contextuelles : comment gérer ?

Qu'est-ce qu'Alert dans Selenium?

An Alerte dans Selenium est une petite boîte de message qui apparaît à l'écran pour donner à l'utilisateur des informations ou une notification. Il informe l'utilisateur de certaines informations ou erreurs spécifiques, demande l'autorisation d'effectuer certaines tâches et fournit également des messages d'avertissement.

Dans ce tutoriel, nous allons apprendre à gérer les popups dans Selenium et différents types d'alertes trouvées dans l'application Web Contrôle de qualité. Nous verrons également comment gérer l'alerte dans Selenium WebDriver et découvrez comment accepter et rejeter l'alerte en fonction des types d'alerte.

Types d'alertes dans Selenium

1) Simple Alert

La classe d'alerte simple dans Selenium affiche des informations ou des avertissements à l'écran.

Simple Alert

2) Prompt Alert

Cette Prompt Alert demande une contribution à l'utilisateur et Selenium webdriver peut saisir le texte à l’aide de sendkeys (« input…. »).

Prompt Alert

3) Confirmation Alert

Cette alerte de confirmation demande l'autorisation d'effectuer un certain type d'opération.

Confirmation Alert

Comment gérer l'alerte dans Selenium pilote web

L'interface d'alerte fournit les quelques méthodes ci-dessous qui sont largement utilisées dans Selenium Pilote Web.

1) annuler le rejet() // Cliquer sur le bouton 'Annuler' de l'alerte.

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

2) annuler accepter()// Cliquer sur le bouton 'OK' de l'alerte.

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

3) Chaîne getText() // Pour capturer le message d'alerte.

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

4) void sendKeys (String stringToSend) // Pour envoyer des données à la boîte d'alerte.

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

Vous pouvez voir un certain nombre de méthodes d'alerte affichées, comme indiqué dans l'écran ci-dessous suggéré par Eclipse.

Nous pouvons facilement passer à l'alerte depuis la fenêtre principale en utilisant Selenium's .basculer vers() méthode.

Gérer l'alerte dans Selenium pilote web

Nous automatisons maintenant le scénario ci-dessous.

Dans ce scénario, nous utiliserons le site de démonstration Guru99 pour illustrer Selenium Gestion des alertes.

Étape 1) Lancez le navigateur Web et ouvrez le site https://demo.guru99.com/test/delete_customer.php

Étape 2) Entrez n’importe quel identifiant client.

Gérer l'alerte dans Selenium pilote web

Étape 3) Après avoir saisi l'identifiant client, cliquez sur le bouton « Soumettre ».

Gérer l'alerte dans Selenium pilote web

Étape 4) Rejeter/accepter l'alerte.

Gérer l'alerte dans Selenium pilote web

Gestion de l'alerte dans Selenium Pilote Web

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();		
    }	

}
		

Sortie :

Lorsque vous exécutez le code ci-dessus, il lance le site. Essayez de supprimer l'identifiant client en gérant l'alerte de confirmation qui s'affiche à l'écran et en supprimant ainsi l'identifiant client de l'application.

Comment gérer la fenêtre pop-up en utilisant Selenium Pilote Web

En automatisation, lorsque nous avons plusieurs fenêtres dans une application Web, l'activité peut avoir besoin de basculer le contrôle entre plusieurs fenêtres de l'une à l'autre afin de terminer l'opération. Une fois l'opération terminée, il doit revenir à la fenêtre principale, c'est-à-dire à la fenêtre parente dans Selenium. Nous verrons cela plus loin dans l’article avec un exemple.

In Selenium pilote Web, il existe des méthodes grâce auxquelles nous pouvons gérer plusieurs fenêtres.

Driver.getWindowHandles();

Pour gérer toutes les fenêtres ouvertes par le pilote Web, nous pouvons utiliser « Driver.getWindowHandles() » et ensuite basculer la fenêtre d'une fenêtre à l'autre dans une application Web. Son type de retour est Iterator .

Driver.getWindowHandle();

Lorsque le site s'ouvre, nous devons gérer la fenêtre principale en driver.getWindowHandle(). Cela gérera la fenêtre actuelle qui l'identifie de manière unique dans cette instance de pilote. Son type de retour est String.

Pour la gestion des fenêtres dans Selenium, nous suivrons les étapes ci-dessous :

Maintenant, nous allons automatiser le scénario ci-dessous pour voir comment gérer plusieurs fenêtres à l'aide Selenium Pilote Web.

Dans ce scénario, nous utiliserons le site de démonstration « Guru99 » pour illustrer la gestion des fenêtres.

Étape 1) Lancez le site.

Lancez le navigateur et ouvrez le site https://demo.guru99.com/popup.php

Gérer la fenêtre contextuelle à l'aide Selenium Pilote Web

Étape 2) Cliquez sur le lien « Cliquez ici ».

Lorsque l'utilisateur clique sur le lien « Cliquez ici », une nouvelle fenêtre enfant s'ouvre.

Gérer la fenêtre contextuelle à l'aide Selenium Pilote Web

Étape 3) La nouvelle fenêtre enfant s'ouvre.

Une nouvelle fenêtre s'ouvre, demandez à l'utilisateur de saisir son identifiant de messagerie et de soumettre la page.

Gérer la fenêtre contextuelle à l'aide Selenium Pilote Web

Étape 4) Entrez votre identifiant de messagerie et soumettez.

Gérer la fenêtre contextuelle à l'aide Selenium Pilote Web

Étape 5) Affichez les informations d’identification d’accès lors de la soumission de la page.

Gérer la fenêtre contextuelle à l'aide Selenium Pilote Web

Lorsque vous exécutez le code, vous verrez que la fenêtre enfant est ouverte dans un nouvel onglet.

  1. Fermez la fenêtre Enfant sur laquelle les informations d'identification sont affichées.

Gérer la fenêtre contextuelle à l'aide Selenium Pilote Web

  1. Basculez vers la fenêtre parent.

Gérer la fenêtre contextuelle à l'aide Selenium Pilote Web

Comment gérer plusieurs 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);				
    }
}		

Sortie :

Lorsque vous exécutez le code ci-dessus, il lance le site et en cliquant sur le lien « Cliquez ici », il ouvre une fenêtre enfant dans un nouvel onglet. Vous pouvez fermer la fenêtre enfant, et basculer vers la fenêtre parent une fois l'opération terminée. Par conséquent, gérer plus d’une fenêtre dans l’application.

Gestion de plusieurs fenêtres dans Selenium
Gestion de plusieurs fenêtres dans Selenium

Conclusion

  • Nous avons défini les types d'alerte et les avons montrés avec une capture d'écran.
  • Démonstration de la gestion de l'alerte avec Selenium WebDriver utilisant un scénario particulier.
  • J'ai manipulé plusieurs fenêtres avec Selenium WebDriver utilisant un scénario particulier.