efficient selenium scripting
En el tutorial anterior, vam discutir les implicacions tècniques mentre s’implementa el registre en un marc . Vam discutir utilitat log4j en longitud. Vam discutir els components bàsics que constitueixen log4j des d’una perspectiva d’usabilitat. Amb els annexos i els dissenys, es pot aprofitar un usuari per triar el format / patró de registre desitjat i la font / ubicació de dades.
Al 27è tutorial actual d'aquest sèrie completa de formació en línia gratuïta sobre seleni , canviaríem el nostre enfocament cap a uns pocs trivials temes importants això ens guiaria per solucionar alguns problemes recurrents. Podem utilitzar-los o no en scripts diaris, però serien útils a la llarga.
Ho faríem discutiu alguns conceptes avançats en què tractaríem els esdeveniments del teclat i el ratolí, accedint a diversos enllaços implementant llistes . Per què no, comencem i comentem breument aquests temes amb l’ajut d’escenaris i fragments de codi adequats.
com invertir l'ordre d'una matriu a Java
Què aprendreu:
- Executors de JavaScript
- Accedir a diversos elements d’una llista
- Gestió d'esdeveniments de teclat i ratolí
- Conclusió
- Lectura recomanada
Executors de JavaScript
Tot i automatitzar un escenari de prova, hi ha certes accions que es converteixen en una part inherent dels scripts de prova.
Aquestes accions poden ser:
- Fent clic en un botó, hiperenllaç, etc.
- Escrivint en un quadre de text
- Desplaçament vertical o horitzontal fins que es visualitzi l'objecte desitjat
- I molt més
Ara, és evident a partir dels tutorials anteriors que la millor manera d’automatitzar aquestes accions és mitjançant les ordres de Selenium.
Però, i si les ordres de seleni no funcionen?
Sí, és absolutament possible que els comandaments bàsics i elementals de seleni no funcionin en determinades situacions.
Dit això, per poder solucionar aquesta situació, recorrem als executors de JavaScript.
Què són els executors de JavaScript?
La interfície JavascriptExecutor forma part de org.openqa.selenium i implementa la classe java.lang.Object. JavascriptExecutor presenta les funcions per executar JavaScript directament al navegador web. Per poder executar el JavaScript, es proporcionen determinats mecanismes en forma de mètodes juntament amb un conjunt específic de paràmetres en la seva implementació.
Mètodes
executeScript (script de cadenes, args)
Com el nom del mètode suggereix, executa el JavaScript dins de la finestra actual, l'alerta, el marc, etc. (la finestra en què es centra la instància WebDriver)
executeAsyncScript (Script de cadena, args)
Com el nom del mètode suggereix, executa el JavaScript dins de la finestra actual, l'alerta, el marc, etc. (la finestra en què es centra la instància WebDriver)
Els paràmetres i la declaració d'importació són comuns als dos mètodes executors.
Paràmetres
Script: el script que cal executar
Argument: els paràmetres que requereix l'script per a la seva execució (si n'hi ha)
Declaració d'importació
Per poder utilitzar JavascriptExecutors als nostres scripts de prova, hem d’importar el paquet mitjançant la sintaxi següent:
importació org.openqa.selenium.JavascriptExecutor;
Codi de mostra
# 1) Feu clic a un element web
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments(0).click();', element);
# 2) Escriure en un quadre de text
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Desplaceu-vos cap avall fins que l'element web estigui a la vista
WebElement element=driver.findElement(By.xpath('//input(contains(@value,'Save'))')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments(0).scrollIntoView(true);',element);
Podeu trobar altres maneres d’escriure el codi per accedir a JavascriptExecutors.
Accedir a diversos elements d’una llista
De vegades, ens podem trobar amb elements del mateix tipus, com ara diversos hipervincles, imatges, etc., disposats en una llista ordenada o no ordenada. Per tant, té un sentit absolut tractar aquests elements mitjançant un sol fragment de codi i això es pot fer mitjançant WebElement List. Consulteu la captura de pantalla següent per entendre els elements de què parlo.
A la imatge anterior, veiem que els diversos proveïdors de serveis pertanyen a una llista no ordenada. Per tant, la verificació de la possibilitat de fer clic i la visibilitat d'aquests elements es pot fer mitjançant una sola peça de codi mitjançant una llista d'elements.
Declaració d'importació
Per poder utilitzar una llista de WebElement als nostres scripts de prova, hem d’importar el paquet mitjançant la sintaxi següent:
importa java.util.List;
Codi de mostra
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div(@id='ServiceProvider')//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iHi ha diversos requisits segons els quals es poden utilitzar les llistes per verificar els elements amb canvis d'implementació adequats.
com obrir un fitxer jnlp windows 10
Gestió d'esdeveniments de teclat i ratolí
Gestió d'esdeveniments de teclat
Com també es va dir anteriorment, hi ha n nombroses maneres de tractar la mateixa afirmació del problema en contextos diferents.
Així, de vegades sorgeix la necessitat de fer front a un problema canviant l’estratègia de negociació convencional amb una estratègia més avançada. He estat testimoni de casos en què no he pogut fer front a alertes i aparèixer, etc., mitjançant comandes de seleni, per la qual cosa he hagut d'optar per diferents utilitats java per tractar-les mitjançant cops de teclat i esdeveniments del ratolí.
La classe de robots és una d'aquestes opcions per realitzar esdeveniments de teclat i esdeveniments de ratolí.
Entenguem el concepte amb l'ajut d'un escenari i la seva implementació.
Escenari:
Recopilem una situació en què apareix a la pantalla una finestra emergent innecessària que no es pot acceptar ni descartar mitjançant la interfície d’alerta, de manera que l’única opció encertada que ens queda és tancar la finestra amb tecles de drecera: 'Alt + barra espaiadora + C' . Vegem com tanquem la finestra emergent amb Robot Class.
Abans d’iniciar la implementació, hauríem d’importar el paquet necessari per poder utilitzar la classe Robot dins del nostre script de prova.
Declaració d'importació
importa java.awt.Robot;
Codi de mostra
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
La classe de robots també es pot utilitzar per gestionar esdeveniments del ratolí, però vegem les capacitats del seleni per gestionar esdeveniments del ratolí.
Gestió d'esdeveniments del ratolí
WebDriver ofereix una àmplia gamma d’utilitats d’interacció que l’usuari pot explotar per automatitzar esdeveniments de ratolí i teclat. Action Interface és una d’aquestes utilitats que simula les interaccions d’un sol usuari.
Per tant, assistiríem a la Interfície d’Acció per situar el ratolí en un menú desplegable que obrirà una llista d’opcions al següent escenari.
Escenari:
- Passeu el ratolí al menú desplegable
- Feu clic a un dels elements de les opcions de la llista
Declaració d'importació
importació org.openqa.selenium.interactions.Actions;
Codi de mostra
c programació de preguntes i respostes d’entrevistes pdf
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
Conclusió
En aquest tutorial, hem discutit alguns temes avançats relacionats amb una seqüència de comandaments eficient i per resoldre problemes relacionats amb els casos en què l'usuari necessita gestionar esdeveniments del ratolí i del teclat. També vam discutir com emmagatzemar més d’un element web en una llista. Espero que pugueu solucionar aquests impediments si us trobeu.
Pròxim tutorial núm. 28 : Per al proper tutorial de la sèrie, parlaríem de concepte de proves de bases de dades mitjançant Selenium WebDriver . Assistiríem al mecanisme de connexió a la base de dades, donant resposta a consultes de seleni i obtenint els resultats a través del codi Selenium WebDriver.
Lectura recomanada
- Introducció a Selenium WebDriver - Tutorial Selenium núm. 8
- Depuració d’escriptures de Selenium amb registres (Tutorial Log4j) - Tutorial Selenium núm. 26
- 30+ millors tutorials sobre seleni: apreneu el seleni amb exemples reals
- Tutorial de Cogombre Selenium: Integració de Cogombre Java Selenium WebDriver
- Com localitzar elements als navegadors Chrome i IE per crear scripts Selenium - Tutorial Selenium # 7
- Implementació del nostre primer script WebDriver - Tutorial Selenium WebDriver # 10
- Configuració i instal·lació senceres de WebDriver amb Eclipse - Selenium Tutorial # 9
- Creació de genèrics i proves: Tutorial Selenium núm. 22