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.
2) Prompt Alert
Cette Prompt Alert demande une contribution à l'utilisateur et Selenium webdriver peut saisir le texte à l’aide de sendkeys (« input…. »).
3) Confirmation Alert
Cette alerte de confirmation demande l'autorisation d'effectuer un certain type d'opération.
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.
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.
Étape 3) Après avoir saisi l'identifiant client, cliquez sur le bouton « Soumettre ».
Étape 4) Rejeter/accepter l'alerte.
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
Étape 2) Cliquez sur le lien « Cliquez ici ».
Lorsque l'utilisateur clique sur le lien « Cliquez ici », une nouvelle fenêtre enfant s'ouvre.
É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.
Étape 4) Entrez votre identifiant de messagerie et soumettez.
Étape 5) Affichez les informations d’identification d’accès lors de la soumission de la page.
Lorsque vous exécutez le code, vous verrez que la fenêtre enfant est ouverte dans un nouvel onglet.
- Fermez la fenêtre Enfant sur laquelle les informations d'identification sont affichées.
- Basculez vers la fenêtre parent.
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.
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.