how handle alerts popups selenium webdriver selenium tutorial 16
Manières efficaces de gérer les alertes / fenêtres contextuelles Windows et Web dans Selenium WebDriver:
questions et réponses d'entretien de support de bureau
Dans le didacticiel précédent, nous avons concentré notre discussion sur différents types d'attente fournis par le WebDriver . Nous avons également discuté des différents types d'options de navigation disponibles dans WebDriver.
Aller de l'avant dans le Tutoriels Selenium WebDriver , nous discuterons de différents types d'alertes disponibles lors du test des applications Web et de leurs stratégies de gestion.
Il existe deux types d'alertes sur lesquelles nous nous concentrerions principalement :
- Fenêtres contextuelles d'alerte Windows
- Fenêtres contextuelles d'alerte Web
Comme nous savons que la gestion des fenêtres contextuelles basées sur des fenêtres dépasse les capacités de WebDriver, nous allons donc utiliser certains utilitaires tiers pour gérer les fenêtres contextuelles.
La gestion des fenêtres contextuelles est l'une des tâches les plus difficiles à automatiser lors du test des applications Web. En raison de la diversité des types de pop-ups, la situation est encore plus complexe.
Qu'est-ce que la boîte d'alerte / la boîte contextuelle / la boîte de confirmation / l'invite / la boîte d'authentification?
Ce n'est rien d'autre qu'une petite boîte qui apparaît sur l'écran d'affichage pour vous donner une sorte d'informations ou pour vous avertir d'une opération potentiellement dommageable ou il peut même vous demander les autorisations pour l'opération.
Exemple: Prenons un exemple concret pour une meilleure compréhension; Supposons que nous avons téléchargé une photo sur l'un de ces sites de réseaux sociaux populaires. Plus tard, je souhaite supprimer la photo téléchargée. Donc, pour supprimer, j'ai cliqué sur le bouton de suppression. Dès que je clique sur le bouton de suppression, le système me met en garde contre mon action en me demandant - Voulez-vous vraiment supprimer le fichier? Nous avons donc maintenant la possibilité d'accepter cette alerte ou de la rejeter.
Alors avant la session, Voyons comment rejeter ou accepter les alertes en fonction de leurs types. À commencer par les fenêtres contextuelles Web.
Ce que vous apprendrez:
Popups Web
Voyons comment les gérons avec WebDriver.
Gestion de la fenêtre contextuelle Web
WebDriver offre aux utilisateurs un moyen très efficace de gérer ces pop-ups en utilisant l'interface d'alerte.
Il y a les quatre méthodes que nous utiliserions avec l'interface d'alerte.
1) annuler annuler () - La méthode licenciement () clique sur le bouton «Annuler» dès que la fenêtre pop-up apparaît.
deux) void accepter () - La méthode accept () clique sur le bouton «Ok» dès que la fenêtre pop-up apparaît.
3) Chaîne getText () - La méthode getText () renvoie le texte affiché dans la boîte d'alerte.
4) void sendKeys (chaîne stringToSend) - La méthode sendKeys () entre le modèle de chaîne spécifié dans la boîte d'alerte.
Avançons et examinons la mise en œuvre réelle.
Explication de l'application sous test
Nous avons conçu une page Web de manière à inclure quelques types fondamentaux d'éléments Web. Il s'agit de la même application que nous avons introduite lors de la discussion de la classe Select plus tôt dans cette série.
- Hyperlien : Les deux hyperliens à savoir «Google» et «abodeQA» ont été fournis pour rediriger l'utilisateur vers «http://www.google.com/» et «http://www.abodeqa.com/» respectivement sur le cliquez sur l'événement.
- Menu déroulant : Les trois hyperliens ont été créés pour sélectionner les couleurs, les fruits et les animaux avec une valeur par défaut.
- Bouton : Un bouton «essayer» a été créé pour afficher la boîte de dialogue contenant les boutons OK et Annuler lors du clic sur l'événement.
(Cliquez sur l'image pour l'agrandir)
Le code HTML utilisé pour créer la page Web mentionnée ci-dessus est le suivant:
Test Sélectionnez la classeRouge Vert Jaune Gris | Pomme Orange Mangue Lime | Sélectionnez Elephant Mouse Dog |
Cliquez sur le bouton pour afficher une boîte de confirmation. Essayez-le function myFunction () {confirm ('Press a button!'); } |
Scénario à automatiser
- Lancez le navigateur Web et ouvrez la page Web
- Cliquez sur le bouton «Essayer»
- Acceptez l'alerte
- Cliquez à nouveau sur le bouton «Essayer»
- Rejeter l'alerte
Code WebDriver utilisant Select Class
Veuillez noter que pour la création de scripts, nous utiliserions le projet «Learning_Selenium» créé dans l'ancien tutoriel.
Étape 1 : Créez une nouvelle classe java nommée «DemoWebAlert» sous le projet «Learning_Selenium».
Étape 2 : Copiez et collez le code ci-dessous dans la classe «DemoWebAlert.java».
Vous trouverez ci-dessous le script de test qui équivaut au scénario mentionné ci-dessus.
import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; /** * class description */ public class DemoWebAlert { WebDriver driver; /** * Constructor */ public DemoWebAlert() { } /** * Set up browser settings and open the application */ @Before public void setUp() { driver=new FirefoxDriver(); // Opened the application driver.get('file:///F:/Work/Selenium/Testing-Presentation/DemoWebPopup.htm'); driver.manage().window().maximize(); } /** * Test to check Select functionality * @throws InterruptedException */ @Test public void testWebAlert() throws InterruptedException { // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert Alert alert = driver.switchTo().alert(); alert.accept(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert driver.switchTo().alert().dismiss(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept(); } /** * Tear down the setup after test completes */ @After public void tearDown() { driver.quit(); } }
Présentation du code
Importer des déclarations
Importer org.openqa.selenium.Alert - Importez ce package avant la création du script. Le package fait référence à la classe Alert qui est nécessaire pour gérer les alertes Web dans WebDriver.
Création d'objets pour la classe Alert
Alert alert = driver.switchTo (). Alert ();
Nous créons une variable de référence pour la classe Alert et la référençons à l'alerte.
tri par fusion récursive c ++
Passer à l'alerte
Driver.switchTo (). Alert ();
La commande ci-dessus est utilisée pour basculer le contrôle vers la fenêtre contextuelle récemment générée.
Acceptez l'alerte
alert.accept ();
La commande ci-dessus accepte l'alerte en cliquant sur le bouton Ok.
Rejeter l'alerte
alert.dismiss ();
La commande ci-dessus ferme l'alerte en cliquant sur le bouton Annuler et par conséquent, l'opération ne doit pas se poursuivre.
Fenêtres contextuelles
Parfois, lors de l'automatisation, nous obtenons des scénarios dans lesquels nous devons gérer les fenêtres contextuelles générées par des fenêtres telles qu'une fenêtre contextuelle d'impression ou une fenêtre de navigation lors du téléchargement d'un fichier.
Lire aussi = >> Comment gérer le téléchargement de fichiers dans Selenium
La gestion de ces fenêtres contextuelles a toujours été un peu délicate car nous savons que Selenium est un outil de test d'automatisation qui ne prend en charge que les tests d'applications Web, ce qui signifie qu'il ne prend pas en charge les applications basées sur Windows et l'alerte de fenêtre en fait partie. Cependant, Selenium seul ne peut pas aider la situation, mais avec une intervention de tiers, ce problème peut être surmonté.
Il existe plusieurs outils tiers disponibles pour gérer les fenêtres contextuelles avec le sélénium.
questions et réponses d'entretien avancé sql pdf
Alors maintenant, gérons une fenêtre contextuelle basée sur la classe Robot.
La classe Robot est un utilitaire basé sur Java qui émule les actions du clavier et de la souris.
Avant d'aller de l'avant, prenons un moment pour jeter un œil à l'application testée (AUT).
Explication de l'application sous test
En tant qu'application en cours de test, nous utiliserions «gmail.com». Je pense que l'application ne nécessite plus de présentations.
Scénario à automatiser
- Lancez le navigateur Web et ouvrez l'application - «gmail.com»
- Entrez un nom d'utilisateur et un mot de passe valides
- Cliquez sur le bouton de connexion
- Cliquez sur le bouton de composition
- Cliquez sur l'icône attacher
- Sélectionnez les fichiers à télécharger avec la fenêtre contextuelle.
Code WebDriver utilisant la classe Robot
Veuillez noter que pour la création de scripts, nous utiliserions le projet «Learning_Selenium» créé dans l'ancien tutoriel.
Étape 1 : Créez une nouvelle classe java nommée «DemoWindowAlert» sous le projet «Learning_Selenium».
Étape 2 : Copiez et collez le code ci-dessous dans la classe «DemoWindowAlert.java».
Vous trouverez ci-dessous le script de test qui équivaut au scénario mentionné ci-dessus.
import java.awt.Robot;
import java.awt.event.KeyEvent; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class DemoWindowAlert {pilote WebDriver; @Before public void setUp () {driver = new FirefoxDriver (); driver.get ('https://gmail.com'); driver.manage (). window (). maximiser (); } @Test public void testWindowAlert () jette une exception {// entrez une adresse e-mail valide driver.findElement (By.id ('Email')). SendKeys ('TestSelenium1607@gmail.com '); // entrez un mot de passe valide driver.findElement (By.id ('Passwd')). sendKeys ('TestSelenium'); // cliquez sur le bouton de connexion driver.findElement (By.id ('signIn')). click (); Thread.sleep (30000); // cliquez sur le bouton de composition driver.findElement (By.xpath ('// div (@ class =' z0 ') // div (contient (text (),' COMPOSE '))')). click (); // cliquez sur l'icône d'attachement des fichiers driver.findElement (By.xpath ('// div (contains (@ command,' Files ')) // div (contains (@ class,' aaA '))')). cliquez ( ); // création d'une instance de la classe Robot (Un utilitaire basé sur Java) Robot rb = new Robot (); // en appuyant sur les touches à l'aide des événements keyPress et keyRelease rb.keyPress (KeyEvent.VK_D); rb.keyRelease (KeyEvent.VK_D); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_BACK_SLASH); rb.keyRelease (KeyEvent.VK_BACK_SLASH); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_P); rb.keyRelease (KeyEvent.VK_P); rb.keyPress (KeyEvent.VK_I); rb.keyRelease (KeyEvent.VK_I); rb.keyPress (KeyEvent.VK_C); rb.keyRelease (KeyEvent.VK_C); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_ENTER); rb.keyRelease (KeyEvent.VK_ENTER); Thread.sleep (2000); } @After public void tearDown () {driver.quit (); }} Présentation du code
Importer des déclarations
import java.awt.Robot - Importez ce package avant la création du script. Le package fait référence à la classe Robot en java qui est nécessaire pour simuler les événements clavier et souris.
import java.awt.event.KeyEvent - Le package permet à l'utilisateur d'utiliser les événements keyPress et keyRelease d'un clavier.
Création d'objets pour la classe Robot
Robot rb = nouveau robot ();
Nous créons une variable de référence pour la classe Robot et l'instancions.
Événements KeyPress et KeyRelease
rb.keyPress (KeyEvent.VK_D);
rb.keyRelease (KeyEvent.VK_D);
Les méthodes keyPress et keyRelease simulent respectivement l'utilisateur pressant et relâchant une certaine touche du clavier.
Conclusion
Dans ce didacticiel, nous avons essayé de vous familiariser avec la classe Alert de WebDriver qui est utilisée pour gérer les fenêtres contextuelles Web. Nous vous avons également présenté la classe Robot qui peut être utilisée pour renseigner la valeur dans l'alerte basée sur la fenêtre à l'aide des événements keyPress et keyRelease.
Résumé de l'article:
- Les alertes sont une petite boîte qui apparaît sur l'écran d'affichage pour vous donner une sorte d'informations ou pour vous avertir d'une opération potentiellement dommageable ou il peut même vous demander les autorisations pour l'opération.
- Il existe généralement deux types d'alertes -
- Fenêtres contextuelles d'alerte basées sur Windows
- Pop-ups d'alertes Web
- Avant le script proprement dit, nous devons importer un package pour pouvoir créer un script WebDriver pour gérer une liste déroulante et rendre la classe Select accessible.
- WebDriver offre aux utilisateurs un moyen très efficace de gérer ces pop-ups en utilisant l'interface d'alerte.
- annuler annuler () - Le rejeter() La méthode clique sur le bouton «Annuler» dès que la fenêtre contextuelle apparaît.
- void accepter () - Le J'accepte() La méthode clique sur le bouton «Ok» dès que la fenêtre contextuelle apparaît.
- Chaîne getText () - Le getText () renvoie le texte affiché dans la boîte d'alerte.
- void sendKeys (chaîne stringToSend) - Le sendKeys () La méthode entre le modèle de chaîne spécifié dans la zone d'alerte.
- Gestion des fenêtres contextuelles a toujours été un peu délicat car nous savons que Selenium est un outil de test d'automatisation qui ne prend en charge que les tests d'applications Web, ce qui signifie qu'il ne prend pas en charge les applications basées sur Windows et l'alerte de fenêtre en fait partie.
- Classe de robot est un utilitaire basé sur Java qui émule les actions du clavier et de la souris et peut être utilisé efficacement pour gérer les fenêtres contextuelles à l'aide d'événements de clavier.
- Les méthodes keyPress et keyRelease simulent respectivement l'utilisateur pressant et relâchant une certaine touche du clavier.
Tutoriel suivant # 17 : Dans le prochain tutoriel, nous discuterons des différents autres commandes WebDriver couramment utilisées . Nous ferions la lumière sur des sujets tels que la gestion des exceptions et la gestion des iframe. Nous discuterons également des commandes get fournies dans WebDriver.
Nous expliquerions ces sujets avec des exemples rapides afin de les rendre compréhensibles pour que les lecteurs puissent exercer ces concepts dans leur script quotidien.
Note aux lecteurs : Jusque-là, restez à l'écoute et automatisez les pages Web ayant les fenêtres contextuelles basées sur le Web et les fenêtres en utilisant l'utilitaire WebDriver - «Classe d'alerte» et l'utilitaire Java - «Classe de robot».
N'hésitez pas à poster vos questions / commentaires à ce sujet ou sur tout autre tutoriel précédent dans les commentaires ci-dessous.
lecture recommandée
- Tutoriel Cucumber Selenium: Intégration Cucumber Java Selenium WebDriver
- Introduction à Selenium WebDriver - Tutoriel Selenium # 8
- Implémentation de notre premier script WebDriver - Tutoriel Selenium WebDriver # 10
- Configuration et installation complètes de WebDriver avec Eclipse - Tutoriel Selenium # 9
- Vérifier la visibilité des éléments Web à l'aide de divers types Commandes WebDriver - Tutoriel Selenium # 14
- Tutoriel GeckoDriver Selenium: Comment utiliser GeckoDriver dans les projets Selenium
- Intégration de Jenkins avec Selenium WebDriver: tutoriel pas à pas
- Script Selenium efficace et scénarios de dépannage - Tutoriel Selenium # 27