implicit explicit wait selenium webdriver
Naučite implicitno i eksplicitno čekanje u programu Selenium WebDriver:
U prethodnom uputstvu pokušali smo vas upoznati s raznim Petlje i uvjetne operacije WebDrivera . Ove se uvjetne metode često bave gotovo svim vrstama opcija vidljivosti za web elemente.
Napredujući u ovome besplatna serija treninga Selenium , razgovarat ćemo različite vrste čekanja koje pruža Selenium WebDriver . Također ćemo razgovarati o v razne vrste navigacijskih opcija dostupno u WebDriveru.
Waits pomažu korisniku da riješi probleme tijekom preusmjeravanja na različite web stranice osvježavanjem cijele web stranice i ponovnim učitavanjem nove web elementi. Ponekad mogu biti i pozivi Ajaxa. Dakle, vremensko kašnjenje može se vidjeti tijekom ponovnog učitavanja web stranica i odražavanja web elemenata.
Korisnici se često mogu kretati kroz razne web stranice naprijed-natrag. Dakle, naredbe / metode navigacije () koje pruža WebDriver pomažu korisniku da simulira scenarije u stvarnom vremenu kretanjem između web stranica s referencom na povijest web preglednika.
WebDriver oprema korisnika s dvije generacije čekanja kako bi se mogao nositi s učestalim učitavanjem stranice s, učitavanja web elemenata, izgled prozora, skočnih prozora i poruka o pogreškama te odraz web elemenata na web stranici.
- Implicitno čekanje
- Eksplicitno pričekajte
Razmotrimo pojedinosti o svakom od njih s obzirom na praktični pristup.
Što ćete naučiti:
- WebDriver implicitno pričekajte
- WebDriver izričito pričekajte
- Očekivano stanje
- Navigacija pomoću WebDrivera
- Zaključak
- Preporučena literatura
WebDriver implicitno pričekajte
Implicitna čekanja koriste se za osiguravanje zadanog vremena čekanja (recimo 30 sekundi) između svakog uzastopnog testnog koraka / naredbe u cijeloj testnoj skripti. Dakle, sljedeći testni korak izvršit će se tek kad protekne 30 sekundi nakon izvršavanja prethodnog testnog koraka / naredbe.
Ključne bilješke
- Implicitno čekanje je jedan redak koda i može se deklarirati u metodi postavljanja testne skripte.
- U usporedbi s eksplicitnim čekanjem, implicitno čekanje je transparentno i nekomplicirano. Sintaksa i pristup jednostavniji su od eksplicitnog čekanja.
Budući da se lako i jednostavno primjenjuje, implicitno čekanje unosi i nekoliko nedostataka. Dovodi do vremena izvršavanja testne skripte jer bi svaka naredba prestala čekati određeno vrijeme prije nastavka izvršavanja.
Stoga, kako bi riješio ovaj problem, WebDriver uvodi eksplicitna čekanja gdje možemo izričito primijeniti čekanja kad god se pojavi situacija umjesto da nasilno čekaju tijekom izvođenja svakog od test koraka.
Izjave o uvozu
uvoz java.util.concurrent.TimeUnit - Da bismo mogli pristupiti i primijeniti implicitno čekanje u našim testnim skriptama, dužni smo uvesti ovaj paket u našu testnu skriptu.
Sintaksa
drv .manage (). timeouts (). implicitnoWait (10, TimeUnit. SEKUNDE );
Uključite gornji redak koda u testnu skriptu ubrzo nakon instanciranja varijable instance WebDriver. Dakle, ovo je sve što je potrebno za postavljanje implicitnog čekanja u testnu skriptu.
Prolaz kroz kôd
Implicitno čekanje nalaže prosljeđivanje dviju vrijednosti kao parametara. Prvi argument označava vrijeme u brojčanim znamenkama koje sustav treba pričekati. Drugi argument ukazuje na mjerilo vremena. Stoga smo u gornjem kodu spomenuli '30' sekundi kao zadano vrijeme čekanja, a vremenska jedinica je postavljena na 'seconds'.
WebDriver izričito pričekajte
Izričita čekanja koriste se za zaustavljanje izvršenja dok ne ispuni određeni uvjet ili ne istekne maksimalno vrijeme. Za razliku od implicitnih čekanja, eksplicitna čekanja primjenjuju se samo za određenu instancu.
WebDriver uvodi klase poput WebDriverWait i ExpectedConditions kako bi nametnuo eksplicitna čekanja u testnim skriptama. U opsegu ove rasprave koristit ćemo 'gmail.com' kao uzorak.
Scenarij koji treba automatizirati
- Pokrenite web preglednik i otvorite 'gmail.com'
- Unesite važeće korisničko ime
- Unesite važeću lozinku
- Kliknite gumb za prijavu
- Pričekajte da gumb za sastavljanje bude vidljiv nakon učitavanja stranice
WebDriver kod pomoću eksplicitnog čekanja
Imajte na umu da bismo za izradu skripti koristili projekt 'Learning_Selenium' stvoren u prethodnim vodičima.
Korak 1 : Stvorite novu java klasu nazvanu 'Wait_Demonstration' u okviru projekta 'Learning_Selenium'.
Korak 2 : Kopirajte i zalijepite donji kod u klasi 'Wait_Demonstration.java'.
Ispod je testna skripta koja je ekvivalent gore spomenutom scenariju.
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(); } }
Izjave o uvozu
- uvoz org. openqa.selenium.support.ui.ExpectedConditions
- uvoz org. openqa.selenium.support.ui.WebDriverWait
- Uvezite gornje pakete prije stvaranja skripte. Paketi se odnose na klasu Select koja je potrebna za obradu padajućeg izbornika.
Instantiranje objekata za klasu WebDriverWait
WebDriverWait pričekajte = novi WebDriverWait ( drv , 30);
Stvaramo referentnu varijablu 'pričekaj' za klasu WebDriverWait i instanciramo je pomoću instance WebDriver i maksimalnog vremena čekanja za otpuštanje izvršenja. Navedeno maksimalno vrijeme čekanja mjeri se u 'sekundama'.
O instanciranju WebDrivera govorilo se u početnim vodičima WebDrivera.
Očekivano stanje
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click();
Gornja naredba čeka određeno vrijeme ili očekivano stanje da se dogodi što god se prvo dogodi ili protekne.
Stoga da bismo to mogli učiniti, koristimo referentnu varijablu 'wait' klase WebDriverWait stvorenu u prethodnom koraku s klasom ExpectedConditions i stvarnim stanjem koje se očekuje. Stoga bi se čim se dogodi očekivano stanje programska kontrola premjestila na sljedeći korak izvršenja, umjesto da nasilno čeka svih 30 sekundi.
U našem uzorku čekamo da gumb 'sastavi' bude prisutan i učitan kao dio učitavanja početne stranice i tako krećemo naprijed pozivanjem naredbe za klik na gumb 'sastavi'.
Vrste očekivanih uvjeta
Klasa ExpectedConditions pruža veliku pomoć u rješavanju scenarija u kojima moramo utvrditi da se stanje dogodi prije izvođenja stvarnog koraka testa.
Klasa ExpectedConditions dolazi sa širokim rasponom očekivanih uvjeta kojima se može pristupiti uz pomoć referentne varijable WebDriverWait i do ().
Razgovarajmo opširno o nekoliko njih:
# 1) elementToBeClickable () - Očekivano stanje čeka da se element može kliknuti, tj. Trebao bi biti prisutan / prikazan / vidljiv na zaslonu, kao i omogućen.
Uzorak koda
wait.until (ExpectedConditions.elementToBeClickable (By.xpath ( '// div (sadrži (tekst (), 'SASTAVI'))' )));
# 2) textToBePresentInElement () - Očekivani uvjet čeka element koji ima određeni uzorak niza.
Uzorak koda
wait.until (ExpectedConditions.textToBePresentInElement (By.xpath ( '// div (@ id = 'zaboravioPass''), 'tekst koji treba pronaći' ));
c ++ otkrivanje curenja memorije
# 3) alertIsPresent () - Očekivano stanje čeka da se pojavi okvir upozorenja.
Uzorak koda
wait.until (ExpectedConditions.alertIsPresent ())! = null);
# 4) titleIs () - Očekivano stanje čeka stranicu s određenim naslovom.
Uzorak koda
wait.until (ExpectedConditions.titleIs ( 'Gmail' ));
# 5) frameToBeAvailableAndSwitchToIt () - Očekivano stanje čeka da okvir bude dostupan i onda čim okvir postane dostupan, kontrola se automatski prebacuje na njega.
Uzorak koda
wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (By.id (“ novi okvir ')));
Vrlo je uobičajena radnja korisnika kada korisnik klikne na tipke natrag i naprijed u web pregledniku naprijed i natrag za navigaciju do različitih web stranica posjećenih u trenutnoj sesiji u povijesti preglednika. Tako da bi simulirao takve radnje koje izvršavaju korisnici, WebDriver uvodi naredbe Navigate.
Ispitajmo ove naredbe detaljno:
# 1) navigate (). Back ()
Ova naredba omogućuje korisniku navigaciju na prethodnu web stranicu.
Uzorak koda:
driver.navigate (). back ();
Gornja naredba ne zahtijeva parametre i vraća korisnika na prethodnu web stranicu u povijesti web preglednika.
# 2) navigate (). Forward ()
Ova naredba omogućuje korisniku navigaciju na sljedeću web stranicu s referencom na povijest preglednika.
Uzorak koda:
driver.navigate (). forward ();
Gornja naredba ne zahtijeva parametre i korisnika preusmjerava na sljedeću web stranicu u povijesti web preglednika.
# 3) navigate (). Refresh ()
Ova naredba omogućuje korisniku da osvježi trenutnu web stranicu i tako ponovno učita sve web elemente.
Uzorak koda:
driver.navigate (). refresh ();
Gornja naredba ne zahtijeva parametre i ponovno učitava web stranicu.
# 4) navigate (). To ()
Ova naredba omogućuje korisniku da pokrene novi prozor web preglednika i prijeđe na navedeni URL.
Uzorak koda:
driver.navigate (). to (“http://google.com”);
Gornja naredba zahtijeva web parametar kao parametar, a zatim otvara navedeni URL u svježe pokrenutom web pregledniku.
Zaključak
U ovome Implicitno i eksplicitno čekanje u vodiču za Selenium WebDriver , pokušali smo vas upoznati s čekanjima WebDrivera. Raspravljali smo i koristili i eksplicitna i implicitna čekanja. Istodobno smo razgovarali i o različitim navigacijskim naredbama.
Evo suštine ovog članka:
- WebDriver omogućuje korisniku da odabere između dostupnih čekanja za rješavanje situacija u kojima tijek izvršenja može zahtijevati mirovanje nekoliko sekundi kako bi učitao web elemente ili ispunio određeni uvjet. U WebDriveru su dostupne dvije vrste čekanja.
- Implicitno čekanje
- Eksplicitno pričekajte
- Implicitna čekanja koriste se za osiguravanje zadanog vremena čekanja između svakog uzastopnog testnog koraka / naredbe u cijeloj testnoj skripti. Prema tome, sljedeći testni korak izvršit će se samo kada je određeno vrijeme proteklo nakon izvršavanja prethodnog testnog koraka / naredbe.
- Izričita čekanja koriste se za zaustavljanje izvršenja dok ne ispuni određeni uvjet ili ne istekne maksimalno vrijeme. Za razliku od implicitnih čekanja, eksplicitna čekanja primjenjuju se samo za određenu instancu.
- WebDriver uvodi klase poput WebDriverWait i ExpectedConditions kako bi nametnuo eksplicitna čekanja
- Očekivani uvjeti klasa pruža veliku pomoć u rješavanju scenarija u kojima moramo utvrditi da se stanje dogodi prije izvođenja stvarnog koraka ispitivanja.
- Klasa ExpectedConditions dolazi sa širokim rasponom očekivanih uvjeta kojima se može pristupiti uz pomoć referentne varijable WebDriverWait i do ().
- Navigirajte () metodama / naredbe se koriste za simuliranje ponašanja korisnika tijekom navigacije između različitih web stranica naprijed-natrag.
Sljedeći vodič # 16 : Nastavljajući na sljedeći vodič na popisu, korisnike ćemo upoznati s raznim vrstama upozorenja koja se mogu pojaviti tijekom pristupa web lokacijama i njihovim pristupima rukovanju u WebDriveru. Vrste upozorenja na koje bismo se usredotočili uglavnom su - skočni prozori s upozorenjima na bazi prozora i skočni prozori s upozorenjima na webu. Kao što znamo da je rukovanje skočnim prozorima zasnovanim na prozorima izvan mogućnosti WebDrivera, stoga bismo također koristili neke uslužne programe trećih strana za rukovanje skočnim prozorima.
Napomena za čitatelje : Do tada čitatelji mogu automatizirati scenarije s različitim učitavanjima stranica i dinamičkim elementima koji iskaču na zaslonu koristeći različite očekivane uvjete i naredbe za navigaciju.
Preporučena literatura
- Vodič za krastavac selenij: Integracija Java Selenium WebDriver krastavaca
- Uvod u Selenium WebDriver - Vodič za selen br. 8
- Implementacija naše prve skripte WebDriver - Vodič br. 10 za Selenium WebDriver
- Česta pitanja o selenu
- Kako postupati s upozorenjima / skočnim prozorima u programu Selenium WebDriver - Vodič za selenij br. 16
- Vodič za generiranje opsežnih izvješća u Selenium WebDriver
- Kako pokrenuti Selenium WebDriver u različitim popularnim preglednicima
- Cjelokupno postavljanje i instaliranje WebDriver-a s Eclipseom - Vodič za selen br. 9