implicit explicit wait selenium webdriver
Apreneu l’espera implícita i explícita a Selenium WebDriver:
Al tutorial anterior, vam intentar fer-vos conèixer els diversos Operacions de bucle i condicionals de WebDriver . Aquests mètodes condicionals solen tractar gairebé tots els tipus d’opcions de visibilitat d’elements web.
Avançar en això sèrie d'entrenament gratuïta de seleni , en parlarem diferents tipus d’espera proporcionada per Selenium WebDriver . També parlarem sobre v diversos tipus d’opcions de navegació disponible a WebDriver.
Les esperes ajuden l’usuari a solucionar problemes mentre redirigeix a diferents pàgines web actualitzant tota la pàgina web i carregant la nova elements web. De vegades també hi pot haver trucades Ajax. Per tant, es pot veure un retard de temps mentre es carreguen les pàgines web i es reflecteixen els elements web.
Els usuaris sovint es troben navegant per diverses pàgines web endavant i enrere. Per tant, els comandaments / mètodes navigate () proporcionats per WebDriver ajuden l’usuari a simular els escenaris en temps real navegant entre les pàgines web amb referència a l’historial del navegador web.
WebDriver equipa l'usuari amb dues gèneres d'espera per gestionar la càrrega de pàgina recurrent s, càrregues d’elements web, l’aparició de Windows, finestres emergents i missatges d’error i reflexió d’elements web a la pàgina web.
- Espera implícita
- Espera explícita
Analitzem cadascun d’ells amb detalls tenint en compte l’enfocament pràctic.
Què aprendreu:
- Espera implícita de WebDriver
- Espera explícita de WebDriver
- Condició prevista
- Navegació mitjançant WebDriver
- Conclusió
- Lectura recomanada
Espera implícita de WebDriver
Les esperes implícites s'utilitzen per proporcionar un temps d'espera predeterminat (per exemple, 30 segons) entre cada pas / ordre de prova consecutiu a tot l'script de prova. Per tant, el pas de prova següent només s'executaria quan hagin transcorregut els 30 segons després d'executar l'ordre / pas de prova anterior.
Notes clau
- L'espera implícita és una sola línia d'un codi i es pot declarar al mètode de configuració de l'script de prova.
- En comparació amb l’espera explícita, l’espera implícita és transparent i senzilla. La sintaxi i l'enfocament són més senzills que l'espera explícita.
Com que és fàcil i senzill d’aplicar, l’espera implícita també presenta alguns inconvenients. Dóna lloc al temps d'execució de l'script de prova, ja que cadascuna de les ordres deixaria d'esperar un temps estipulat abans de reprendre l'execució.
Per tant, per solucionar aquest problema, WebDriver introdueix esperes explícites en les quals podem aplicar explícitament esperes sempre que es produeixi la situació en lloc d’esperar amb força mentre executem cadascun dels passos de la prova.
Importar declaracions
importació java.util.concurrent.TimeUnit - Per poder accedir i aplicar una espera implícita als nostres scripts de prova, estem obligats a importar aquest paquet al nostre script de prova.
Sintaxi
drv .manage (). timeouts (). Implícitament Espera (10, TimeUnit. SEGONS );
Incloeu la línia de codi anterior al vostre script de prova poc després de la instància de la variable d’instància de WebDriver. Per tant, això és tot el necessari per establir una espera implícita al vostre script de prova.
Resolució de codi
L’espera implícita obliga a passar dos valors com a paràmetres. El primer argument indica l’hora en els dígits numèrics que el sistema ha d’esperar. El segon argument indica l’escala de mesura del temps. Per tant, al codi anterior, hem esmentat els '30' segons com a temps d'espera predeterminat i la unitat de temps s'ha definit a 'segons'.
Espera explícita de WebDriver
Les esperes explícites s’utilitzen per aturar l’execució fins que es compleixi una condició concreta o hagi transcorregut el temps màxim. A diferència de les esperes implícites, les esperes explícites només s’apliquen per a una instància concreta.
WebDriver introdueix classes com WebDriverWait i ExpectedConditions per aplicar esperes explícites als scripts de prova. En l'àmbit d'aquesta discussió, utilitzarem 'gmail.com' com a exemplar.
Escenari a automatitzar
- Inicieu el navegador web i obriu el 'gmail.com'
- Introduïu un nom d'usuari vàlid
- Introduïu una contrasenya vàlida
- Feu clic al botó d'inici de sessió
- Espereu que el botó Redacta sigui visible després de carregar la pàgina
Codi WebDriver mitjançant espera explícita
Tingueu en compte que per a la creació de seqüències d’ordres, faríem servir el projecte “Learning_Selenium” creat als antics tutorials.
Pas 1 : Creeu una nova classe java anomenada 'Demostració_espera' al projecte 'Learning_Selenium'.
Pas 2 : Copieu i enganxeu el codi següent a la classe 'Wait_Demonstration.java'.
A continuació es mostra l'script de prova que equival a l'escenari esmentat anteriorment.
import static org.junit.Assert.*; import java.util.concurrent.TimeUnit; 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.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Wait_Demonstration { // created reference variable for WebDriver WebDriver drv; @Before public void setup() throws InterruptedException { // initializing drv variable using FirefoxDriver drv=new FirefoxDriver(); // launching gmail.com on the browser drv.get('https://gmail.com'); // maximized the browser window drv.manage().window().maximize(); drv.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } @Test public void test() throws InterruptedException { // saving the GUI element reference into a 'username' variable of WebElement type WebElement username = drv.findElement(By.id('Email')); // entering username username.sendKeys('shruti.shrivastava.in'); // entering password drv.findElement(By.id('Passwd')).sendKeys('password'); // clicking signin button drv.findElement(By.id('signIn')).click(); // explicit wait - to wait for the compose button to be click-able WebDriverWait wait = new WebDriverWait(drv,30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); // click on the compose button as soon as the 'compose' button is visible drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click(); } @After public void teardown() { // closes all the browser windows opened by web driver drv.quit(); } }
Importar declaracions
- importació org. openqa.selenium.support.ui.ExpectedConditions
- importació org. openqa.selenium.support.ui.WebDriverWait
- Importeu els paquets anteriors abans de la creació de l'script. Els paquets fan referència a la classe Select que es requereix per gestionar el menú desplegable.
Instanciació d'objectes per a la classe WebDriverWait
WebDriverWait espera = nou WebDriverWait ( drv , 30);
Creem una variable de referència 'espera' per a la classe WebDriverWait i la instanciem mitjançant la instància de WebDriver i el temps màxim d'espera per a l'execució fins al cessament. El temps màxim d'espera esmentat es mesura en 'segons'.
La instància de WebDriver es va discutir en els tutorials inicials de WebDriver.
Condició prevista
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click();
L'ordre anterior espera que es produeixi un temps estipulat o que es produeixi una condició esperada el que passi o passi primer.
Així, per poder fer-ho, fem servir la variable de referència 'espera' de la classe WebDriverWait creada al pas anterior amb la classe ExpectedConditions i una condició real que s'espera que es produeixi. Per tant, tan aviat com es produeixi la condició esperada, el control del programa passaria al següent pas d’execució en lloc d’esperar amb força durant els 30 segons sencers.
En el nostre exemplar, esperem que el botó 'redacta' estigui present i es carregui com a part de la càrrega de la pàgina d'inici i, per tant, avancem cridant l'ordre clic al botó 'redactar'.
Tipus de condicions previstes
La classe ExpectedConditions proporciona una gran ajuda per fer front a situacions en què hem de determinar si es produeix una condició abans d’executar el pas de prova real.
La classe ExpectedConditions inclou un ampli ventall de condicions esperades a les quals es pot accedir amb l'ajut de la variable de referència WebDriverWait i el mètode until ().
Analitzem-ne detalladament alguns:
# 1) elementToBeClickable () - La condició esperada espera que un element es pugui fer clic, és a dir, hauria de ser present / visible / visible a la pantalla i habilitat.
Codi de mostra
wait.until (ExpectedConditions.elementToBeClickable (By.xpath ( '// div (contains (text (), 'COMPOSE'))' )));
# 2) textToBePresentInElement () - La condició esperada espera que un element tingui un patró de cadena determinat.
Codi de mostra
wait.until (ExpectedConditions.textToBePresentInElement (By.xpath ( '// div (@ id =‘ oblidatPass ''),' text a trobar ' ));
els millors netejadors de registre gratuïts per a Windows 10
# 3) alertIsPresent () - La condició esperada espera que aparegui un quadre d'alerta.
Codi de mostra
wait.until (ExpectedConditions.alertIsPresent ())! = nul);
# 4) titleIs () - La condició esperada espera una pàgina amb un títol específic.
Codi de mostra
wait.until (ExpectedConditions.titleIs ( 'Gmail' ));
# 5) frameToBeAvailableAndSwitchToIt () - La condició esperada espera que hi hagi un quadre disponible i, tan aviat com el marc estigui disponible, el control hi canviarà automàticament.
Codi de mostra
wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (By.id (“ nou marc ')));
Hi ha una acció de l'usuari molt comuna en què l'usuari fa clic als botons enrere i endavant del navegador web cap enrere per navegar a les diferents pàgines web visitades a la sessió actual a l'historial del navegador. Així, per simular aquestes accions realitzades pels usuaris, WebDriver introdueix ordres de navegació.
Examinem aquestes ordres en detall:
# 1) navigate (). Back ()
Aquesta ordre permet a l'usuari navegar a la pàgina web anterior.
Codi de mostra:
driver.navigate (). back ();
L'ordre anterior no requereix paràmetres i torna l'usuari a la pàgina web anterior de l'historial del navegador web.
# 2) navigate (). Forward ()
Aquesta ordre permet a l'usuari navegar a la pàgina web següent fent referència a l'historial del navegador.
Codi de mostra:
driver.navigate (). forward ();
L'ordre anterior no requereix paràmetres i redirigeix l'usuari a la següent pàgina web de l'historial del navegador web.
# 3) navigate (). Refresh ()
Aquesta ordre permet a l'usuari actualitzar la pàgina web actual recarregant així tots els elements web.
Codi de mostra:
driver.navigate (). refresh ();
L'ordre anterior no requereix paràmetres i recarrega la pàgina web.
# 4) navega (). A ()
Aquesta ordre permet a l'usuari iniciar una nova finestra del navegador web i navegar fins a l'URL especificat.
Codi de mostra:
driver.navigate (). to ('http://google.com');
L'ordre anterior requereix un URL web com a paràmetre i, a continuació, obre l'URL especificat en un navegador web recentment llançat.
Conclusió
En aquest Tutorial d'espera implícita i explícita al Selenium WebDriver , hem intentat fer-vos conèixer les esperes de WebDriver. Vam discutir i exercir les esperes explícites i implícites. Al mateix temps, també vam discutir les diferents ordres de navegació.
Aquests són els punts clau d’aquest article:
- WebDriver permet a l'usuari escollir entre les esperes disponibles per gestionar situacions en què el flux d'execució pot requerir una estona durant uns segons per carregar els elements web o complir una condició específica. Hi ha dos tipus d’espera disponibles a WebDriver.
- Espera implícita
- Espera explícita
- Esperes implícites s'utilitzen per proporcionar un temps d'espera predeterminat entre cada pas / ordre de prova consecutiu a tot l'script de prova. Per tant, el pas de prova següent només s'executaria quan hagi transcorregut el temps especificat després d'executar l'ordre / pas de prova anterior.
- Espera explícita s'utilitzen per aturar l'execució fins que es compleixi una condició concreta o hagi transcorregut el temps màxim. A diferència de les esperes implícites, les esperes explícites només s’apliquen per a una instància concreta.
- WebDriver introdueix classes com WebDriverWait i ExpectedConditions per aplicar les esperes explícites
- Condicions esperades class proporciona una gran ajuda per fer front a situacions en què hem de determinar si es produeix una condició abans d'executar el pas de prova real.
- La classe ExpectedConditions inclou un ampli ventall de condicions esperades a les quals es pot accedir amb l'ajut de la variable de referència WebDriverWait i el mètode until ().
- Mètodes Navigate () / Les ordres / s’utilitzen per simular el comportament de l’usuari mentre navega entre diverses pàgines web endavant i enrere.
Pròxim tutorial núm. 16 : Passant al següent tutorial de la llista, familiaritzem els usuaris amb diversos tipus d'alertes que poden aparèixer mentre accedeixen a llocs web i els seus enfocaments de maneig a WebDriver. Els tipus d'alertes en què ens centraríem són majoritàriament: finestres emergents d'alertes basades en Windows i finestres emergents d'alertes basades en web. Com sabem que la gestió de finestres emergents basades en Windows està més enllà de les capacitats de WebDriver, per tant, també exerciríem algunes utilitats de tercers per gestionar les finestres emergents de finestres.
Nota per als lectors : Fins llavors, els lectors poden automatitzar els escenaris amb diverses càrregues de pàgina i elements dinàmics que apareixen a la pantalla mitjançant les diferents condicions esperades i navegar per ordres.
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
- Preguntes més freqüents sobre el seleni
- Com gestionar les alertes / finestres emergents a Selenium WebDriver - Selenium Tutorial # 16
- Guia per generar informes d’extensió a Selenium WebDriver
- Com executar Selenium WebDriver en diferents navegadors populars
- Configuració i instal·lació senceres de WebDriver amb Eclipse - Tutorial Selenium # 9