how handle alerts popups selenium webdriver selenium tutorial 16
Maneres eficients de gestionar alertes i finestres emergents basades en web i Windows a Selenium WebDriver:
com trobar la clau de seguretat al router
Al tutorial anterior, vam centrar la nostra discussió en diferents tipus d’espera proporcionada pel WebDriver . També hem debatut sobre diversos tipus d’opcions de navegació disponibles a WebDriver.
Avançar al Tutorials de Selenium WebDriver , en parlarem diferents tipus d’alertes disponibles mentre es proven les aplicacions web i les seves estratègies de maneig.
Hi ha dos tipus d'alertes en què ens centraríem principalment :
- Finestres emergents d'alerta basades en Windows
- Finestres emergents d'alerta basades en web
Com sabem que el maneig de finestres emergents basades en Windows està més enllà de les capacitats de WebDriver, per tant, exerciríem algunes utilitats de tercers per gestionar les finestres emergents de finestres.
La manipulació de les finestres emergents és una de les feines més difícils d’automatitzar mentre es proven aplicacions web. A causa de la diversitat de tipus de finestres emergents, la situació es complica encara més.
Què és el quadre d'alerta / quadre emergent / quadre de confirmació / sol·licitud / quadre d'autenticació?
No és res més que un petit quadre que apareix a la pantalla per proporcionar-vos algun tipus d'informació o per advertir-vos d'una operació potencialment perjudicial o fins i tot us pot demanar els permisos per a l'operació.
Exemple: Considerem un exemple de la vida real per a una millor comprensió; Suposem que hem penjat una fotografia en qualsevol d’aquests populars llocs de xarxes socials. Més endavant, vull suprimir la fotografia penjada. Per tant, per fer-ho, he fet clic al botó Suprimeix. Tan bon punt faig clic al botó Suprimeix, el sistema m’adverteix de la meva acció i us demana: de debò voleu suprimir el fitxer? Per tant, ara tenim l’opció d’acceptar aquesta alerta o de rebutjar-la.
Així que abans de la sessió, vegem com rebutgem o acceptem les alertes en funció del seu tipus. Començant per les finestres emergents basades en web.
Què aprendreu:
- Finestres emergents basades en web
- Finestres emergents basades en finestres
- Conclusió
- Lectura recomanada
Finestres emergents basades en web
Vegem com els gestionem mitjançant WebDriver.
Gestió del quadre emergent basat en web
WebDriver ofereix als usuaris una manera molt eficient de manejar aquestes finestres emergents mitjançant la interfície Alert.
Hi ha els quatre mètodes que faríem servir juntament amb la interfície Alert.
1) anul·lar nul () - El mètode dismiss () fa clic al botó 'Cancel·la' tan aviat com aparegui la finestra emergent.
2) void accept () - El mètode accept () fa clic al botó 'Ok' tan bon punt aparegui la finestra emergent.
3) Cadena getText () - El mètode getText () retorna el text que es mostra al quadre d'alerta.
4) void sendKeys (String stringToSend) - El mètode sendKeys () introdueix el patró de cadena especificat al quadre d'alerta.
Seguim endavant i vegem la implementació real.
Explicació de l'aplicació en prova
Hem dissenyat una pàgina web de manera que inclogui alguns tipus fonamentals d’elements web. Aquesta és la mateixa aplicació que vam introduir mentre discutíem Select class anteriorment en aquesta sèrie.
- Hiperenllaç : S'han proporcionat els dos hipervincles, és a dir, 'Google' i 'abodeQA', que redirigeixen l'usuari a 'http://www.google.com/' i 'http://www.abodeqa.com/' respectivament al feu clic a l'esdeveniment.
- Menú desplegable : Els tres enllaços s'han creat per seleccionar colors, fruites i animals amb un valor definit per defecte.
- Botó : S'ha creat un botó 'prova-ho' per mostrar el quadre emergent que té botons D'acord i Cancel·la en fer un clic.
(Feu clic a la imatge per veure la imatge ampliada)
Posteriorment es dóna el codi HTML utilitzat per crear la pàgina web esmentada anteriorment:
Prova de classe selectaVermell Verd Groc Gris | Apple Orange Mango Lime | Seleccioneu Elephant Mouse Dog |
Feu clic al botó per mostrar un quadre de confirmació. Proveu-la amb la funció myFunction () {confirm ('Premeu un botó!'); } |
Escenari a automatitzar
- Inicieu el navegador web i obriu la pàgina web
- Feu clic al botó 'Prova-ho'
- Accepteu l'alerta
- Torneu a fer clic al botó 'Prova-ho'
- Rebutja l'alerta
Codi WebDriver mitjançant Selecció de classe
Tingueu en compte que per a la creació de seqüències d’ordres, faríem servir el projecte “Learning_Selenium” creat a l’anterior tutorial.
Pas 1 : Creeu una nova classe java anomenada 'DemoWebAlert' dins del projecte 'Learning_Selenium'.
Pas 2 : Copieu i enganxeu el codi següent a la classe 'DemoWebAlert.java'.
A continuació es mostra l'script de prova que equival a l'escenari esmentat anteriorment.
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(); } }
Recorregut de codi
Importar declaracions
Importa org.openqa.selenium.Alert - Importeu aquest paquet abans de crear el script. El paquet fa referència a la classe Alert que és necessària per gestionar les alertes basades en web a WebDriver.
Creació d'objectes per a la classe Alert
Alert alert = driver.switchTo (). Alert ();
Creem una variable de referència per a la classe Alert i la remetem a l'alerta.
implementació de llistes c ++ doblement enllaçades
Canvia a Alerta
Driver.switchTo (). Alert ();
L'ordre anterior s'utilitza per canviar el control a la finestra emergent generada recentment.
Accepteu l'alerta
alert.accept ();
L’ordre anterior accepta l’alerta fent clic al botó Ok.
Rebutgeu l'alerta
alert.dismiss ();
L'ordre anterior tanca l'alerta, fent clic al botó Cancel·la i, per tant, l'operació no hauria de continuar.
Finestres emergents basades en finestres
De vegades, mentre s’automatitza, obtenim alguns escenaris en què hem de gestionar les finestres emergents que generen les finestres, com ara una finestra emergent d’impressió o una finestra de navegació, mentre pengeu un fitxer.
Llegiu també = >> Com gestionar la càrrega de fitxers a Selenium
La gestió d’aquestes finestres emergents sempre ha estat una mica complicada, ja que sabem que Selenium és una eina de proves d’automatització que només admet proves d’aplicacions web, és a dir, no admet aplicacions basades en Windows i l’alerta de finestra és un d’ells. Tanmateix, el seleni per si sol no pot evitar la situació, però juntament amb alguna intervenció de tercers, es pot superar aquest problema.
Hi ha diverses eines de tercers disponibles per gestionar finestres emergents basades en finestres juntament amb el seleni.
preguntes i respostes de l'entrevista angular js
Ara doncs, gestionem una finestra emergent basada en finestres mitjançant la classe Robot.
La classe de robots és una utilitat basada en Java que emula les accions del teclat i el ratolí.
Abans de seguir endavant, dediquem-nos un moment a fer un cop d'ull a l'aplicació en prova (AUT).
Explicació de l'aplicació en prova
Com a aplicació en prova, faríem servir 'gmail.com'. Crec que l'aplicació no requereix cap presentació més.
Escenari a automatitzar
- Inicieu el navegador web i obriu l'aplicació - 'gmail.com'
- Introduïu un nom d'usuari i una contrasenya vàlids
- Feu clic al botó d'inici de sessió
- Feu clic al botó de redacció
- Feu clic a la icona adjunta
- Seleccioneu els fitxers que voleu carregar amb la finestra emergent basada en finestres.
Codi WebDriver mitjançant la classe de robots
Tingueu en compte que per a la creació de seqüències d’ordres, faríem servir el projecte “Learning_Selenium” creat a l’anterior tutorial.
Pas 1 : Creeu una nova classe java anomenada 'DemoWindowAlert' dins del projecte 'Learning_Selenium'.
Pas 2 : Copieu i enganxeu el codi següent a la classe 'DemoWindowAlert.java'.
A continuació es mostra l'script de prova que equival a l'escenari esmentat anteriorment.
import java.awt.Robot;
importació java.awt.event.KeyEvent; importació org.junit.After; importació org.junit.abans; importació org.junit.Test; import org.openqa.selenium.By; importació org.openqa.selenium.WebDriver; importació org.openqa.selenium.firefox.FirefoxDriver; classe pública DemoWindowAlert {controlador WebDriver; @Before public void setUp () {controlador = nou FirefoxDriver (); driver.get ('https://gmail.com'); driver.manage (). window (). maximize (); } @Test public void testWindowAlert () llença una excepció {// introduïu una adreça de correu electrònic vàlida driver.findElement (By.id ('Correu electrònic')). SendKeys ('TestSelenium1607@gmail.com '); // introduïu una contrasenya vàlida driver.findElement (By.id ('Passwd')). sendKeys ('TestSelenium'); // feu clic al botó d'inici de sessió driver.findElement (By.id ('signIn')). clic (); Thread.sleep (30000); // feu clic al botó de redacció driver.findElement (By.xpath ('// div (@ class =' z0 ') // div (contains (text (),' COMPOSE '))')). click (); // feu clic a la icona d’adjuntar fitxers driver.findElement (By.xpath ('// div (conté (ordre @,' Fitxers ')) // div (conté (classe @, aaa')) ')). feu clic a ( ); // creació de la instància de la classe Robot (Una utilitat basada en Java) Robot rb = new Robot (); // prement tecles amb l'ajuda de keyPress i keyRelease esdeveniments 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 (); }} Recorregut de codi
Importar declaracions
importació de java.awt.Robot - Importeu aquest paquet abans de la creació de l'script. El paquet fa referència a la classe Robot en java que és necessària per simular esdeveniments de teclat i ratolí.
importació java.awt.event.KeyEvent - El paquet permet a l'usuari utilitzar els esdeveniments keyPress i keyRelease d'un teclat.
Creació d'objectes per a la classe Robot
Robot rb = robot nou ();
Creem una variable de referència per a la classe Robot i la instanciem.
Esdeveniments KeyPress i KeyRelease
rb.keyPress (KeyEvent.VK_D);
rb.keyRelease (KeyEvent.VK_D);
Els mètodes keyPress i keyRelease simulen que l'usuari prem i deixa anar una tecla determinada al teclat respectivament.
Conclusió
En aquest tutorial, hem intentat fer-vos conèixer la classe Alert de WebDriver que s’utilitza per gestionar les finestres emergents basades en web. També us vam informar sobre la classe Robot que es pot utilitzar per omplir el valor de l'alerta basada en finestres amb l'ajuda dels esdeveniments keyPress i keyRelease.
Resum de l'article:
- Les alertes són un petit quadre que apareix a la pantalla per proporcionar-vos algun tipus d'informació o per advertir-vos d'una operació potencialment perjudicial o fins i tot us pot demanar els permisos per a l'operació.
- Popularment hi ha dos tipus d’alertes -
- Finestres emergents d'alerta basades en Windows
- Finestres emergents d'alerta basades en web
- Abans de la seqüència de comandaments real, hem d’importar un paquet per poder crear un script de WebDriver per gestionar un menú desplegable i fer accessible la classe Select.
- WebDriver ofereix als usuaris una manera molt eficient de manejar aquestes finestres emergents mitjançant la interfície Alert.
- anul·lar nul () - El acomiadar () el mètode fa clic al botó 'Cancel·la' tan aviat com aparegui la finestra emergent.
- void accept () - El acceptar () el mètode fa clic al botó 'Ok' tan bon punt aparegui la finestra emergent.
- Corda getText () - El getText () torna el text que es mostra al quadre d'alerta.
- void sendKeys (String stringToSend) - El sendKeys () El mètode introdueix el patró de cadena especificat al quadre d'alerta.
- Gestió de finestres emergents basades en finestres sempre han estat una mica complicats, ja que sabem que Selenium és una eina de proves d’automatització que només admet proves d’aplicacions web, és a dir, no admet aplicacions basades en Windows i l’alerta de finestra és una d’elles.
- Classe de robots és una utilitat basada en Java que emula les accions del teclat i el ratolí i que es pot utilitzar eficaçment per gestionar les finestres emergents basades en finestres amb l'ajuda d'esdeveniments de teclat.
- Els mètodes keyPress i keyRelease simulen que l'usuari prem i deixa anar una tecla determinada al teclat respectivament.
Pròxim tutorial núm. 17 : Al proper tutorial, parlaríem sobre els altres ordres WebDriver d'ús habitual . Donaríem llum sobre temes com el tractament d’excepcions i el tractament d’iframe. També parlaríem sobre les ordres get que es proporcionen a WebDriver.
Explicaríem aquests temes amb exemples ràpids per fer-los comprensibles perquè els lectors puguin exercir aquests conceptes en el seu dia a dia.
Nota per als lectors : Fins llavors, estigueu atents i automatitzeu les pàgines web amb finestres emergents basades en web i en finestres mitjançant la utilitat WebDriver - 'Alert class' i la utilitat Java - 'Robot Class'.
No dubteu a publicar les vostres consultes / comentaris sobre aquest o qualsevol altre tutorial anterior als comentaris següents.
Lectura recomanada
- Tutorial de Cogombre Selenium: Integració de Cogombre Java Selenium WebDriver
- Introducció a Selenium WebDriver - Tutorial Selenium # 8
- Implementació del nostre primer script WebDriver - Selenium WebDriver Tutorial # 10
- Configuració i instal·lació senceres de WebDriver amb Eclipse - Tutorial Selenium # 9
- Comproveu la visibilitat dels elements web mitjançant diversos tipus d’ordres de WebDriver - Tutorial Selenium núm. 14
- Tutorial de GeckoDriver Selenium: Com utilitzar GeckoDriver en projectes de Selenium
- Integració de Jenkins amb Selenium WebDriver: tutorial pas a pas
- Escenaris de scripts i resolució de problemes de Selenium eficients: tutorial núm. 27 de Selenium