implicit explicit wait selenium webdriver
Naučite se implicitnega in eksplicitnega čakanja v programu Selenium WebDriver:
V prejšnji vadnici smo vas poskušali seznaniti z različnimi Looping in pogojne operacije WebDriverja . Te pogojne metode pogosto obravnavajo skoraj vse vrste možnosti vidnosti spletnih elementov.
Pri tem gremo naprej brezplačna serija treningov selena , bomo razpravljali različne vrste čakanja, ki jih zagotavlja Selenium WebDriver . Pogovorili se bomo tudi o v različne vrste navigacijskih možnosti na voljo v programu WebDriver.
Čakanja pomagajo uporabniku pri odpravljanju težav med preusmerjanjem na različne spletne strani tako, da osvežijo celotno spletno stran in ponovno naložijo novo spletni elementi. Včasih lahko pride tudi do klicev Ajaxa. Tako je med ponovnim nalaganjem spletnih strani in odsevom spletnih elementov mogoče opaziti časovni zamik.
Uporabniki pogosto najdejo navigacijo po različnih spletnih straneh naprej in nazaj. Tako ukazi /) ukazi / metode, ki jih ponuja WebDriver, uporabniku pomagajo pri simulaciji realnočasovnih scenarijev s krmarjenjem med spletnimi stranmi glede na zgodovino spletnega brskalnika.
WebDriver uporabnika opremi z dvema generama čakalnih vrst, da lahko obvlada ponavljajoče se nalaganje strani s, obremenitve spletnih elementov, videz oken, pojavnih oken in sporočil o napakah ter odsev spletnih elementov na spletni strani.
- Implicitno počakajte
- Izrecno počakajte
O vsakem izmed njih bomo podrobno razpravljali ob upoštevanju praktičnega pristopa.
Kaj se boste naučili:
- WebDriver implicitno počakajte
- Izrecno počakajte na WebDriver
- Pričakovano stanje
- Navigacija s programom WebDriver
- Zaključek
- Priporočeno branje
WebDriver implicitno počakajte
Implicitna čakanja se uporabljajo za zagotovitev privzetega čakalnega časa (recimo 30 sekund) med vsakim zaporednim preskusnim korakom / ukazom v celotnem preskusnem skriptu. Tako bi se nadaljnji preizkusni korak izvedel šele, ko preteče 30 sekund po izvedbi prejšnjega preizkusnega koraka / ukaza.
Ključne opombe
- Implicitno čakanje je ena vrstica kode in jo je mogoče prijaviti v nastavitveni metodi testnega skripta.
- V primerjavi z eksplicitnim čakanjem je implicitno čakanje pregledno in enostavno. Sintaksa in pristop sta enostavnejša od eksplicitnega čakanja.
Ker je implicitno čakanje enostavno in enostavno uporabiti, prinaša tudi nekaj pomanjkljivosti. Nastane čas izvedbe preizkusnega skripta, saj bi vsak od ukazov prenehal čakati določen čas pred nadaljevanjem izvajanja.
Tako WebDriver za odpravljanje te težave uvaja eksplicitna čakanja, kjer lahko izrecno uporabimo čakanja, kadar koli se pojavi situacija, namesto da bi na silje čakali med izvajanjem vsakega od preskusnih korakov.
Izjave o uvozu
uvoz java.util.concurrent.TimeUnit - Za dostop in uporabo implicitnega čakanja v testnih skriptih bomo ta paket uvozili v testni skript.
Sintaksa
drv .manage (). timeouts (). implicitno počakajte (10, TimeUnit. SEKUNDE );
V testni skript vključite zgornjo vrstico kode kmalu po vzpostavitvi spremenljivke primerka WebDriver. To je vse, kar je potrebno za nastavitev implicitnega čakanja v testni skript.
Sprehod po kodi
Implicitno čakanje zahteva, da se dve vrednosti preneseta kot parametra. Prvi argument označuje čas v številskih številkah, ki ga mora sistem počakati. Drugi argument označuje merilno lestvico časa. Tako smo v zgornji kodi kot privzeti čas čakanja navedli '30' sekund, časovna enota pa je nastavljena na 'sekunde'.
Izrecno počakajte na WebDriver
Izrecna čakanja se uporabljajo za zaustavitev izvršitve, dokler ni izpolnjen določen pogoj ali poteče najdaljši čas. Za razliko od implicitnih čakalnih vrst se eksplicitna čakanja uporabljajo samo za določen primerek.
WebDriver uvaja razrede, kot sta WebDriverWait in ExpectedConditions, da v preskusne skripte uveljavi eksplicitno čakanje. V okviru te razprave bomo za vzorec uporabili »gmail.com«.
Scenarij za avtomatizacijo
- Zaženite spletni brskalnik in odprite gmail.com
- Vnesite veljavno uporabniško ime
- Vnesite veljavno geslo
- Kliknite gumb za prijavo
- Počakajte, da je gumb za sestavljanje viden po nalaganju strani
Koda WebDriver z uporabo eksplicitnega čakanja
Upoštevajte, da bomo za ustvarjanje skriptov uporabljali projekt 'Learning_Selenium', ustvarjen v prejšnjih vajah.
Korak 1 : Ustvarite nov razred jave, imenovan »Wait_Demonstration« v projektu »Learning_Selenium«.
2. korak : Kopirajte in prilepite spodnjo kodo v razredu 'Wait_Demonstration.java'.
Spodaj je preskusni skript, ki je enakovreden zgoraj omenjenemu 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
- Uvozite zgoraj navedene pakete pred ustvarjanjem skripta. Paketi se nanašajo na razred Select, ki je potreben za obdelavo spustnega menija.
Instantiation objekta za razred WebDriverWait
WebDriverWait počakajte = novo WebDriverWait ( drv , 30);
Ustvarimo referenčno spremenljivko »čakanje« za razred WebDriverWait in jo ustvarimo z uporabo primerka WebDriver in največjega čakalnega časa za odpustitev izvedbe. Najdaljši navedeni čakalni čas se meri v 'sekundah'.
Primerek WebDriver je bil obravnavan v začetnih vajah WebDriver.
Pričakovano stanje
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click();
Zgornji ukaz čaka določen čas ali pričakovano stanje, kar nastopi ali preteče prej.
Da bi to lahko storili, uporabimo referenčno spremenljivko »čakanje« razreda WebDriverWait, ustvarjeno v prejšnjem koraku z razredom ExpectedConditions in dejanskim stanjem, ki naj bi se zgodilo. Torej, takoj ko nastopi pričakovano stanje, se programska kontrola premakne na naslednji korak izvedbe, namesto da bi na silo čakala celotnih 30 sekund.
V našem vzorcu počakamo, da je gumb »sestavi« prisoten in naložen kot del nalaganja domače strani in se nato premaknemo naprej s klicem klika na gumb »sestavi«.
Vrste pričakovanih pogojev
Razred ExpectedConditions nudi veliko pomoč pri reševanju scenarijev, kjer moramo pred izvajanjem dejanskega koraka preizkusa ugotoviti, ali se stanje pojavi.
Razred ExpectedConditions ima široko paleto pričakovanih pogojev, do katerih je mogoče dostopati s pomočjo referenčne spremenljivke WebDriverWait in do ().
Pogovorimo se o nekaterih od njih na dolgo:
# 1) elementToBeClickable () - Pričakovano stanje čaka, da je element mogoče klikniti, torej mora biti prisoten / prikazan / viden na zaslonu in omogočen.
Vzorčna koda
wait.until (ExpectedConditions.elementToBeClickable (By.xpath ( '// div (vsebuje (besedilo (), 'SESTAVI'))' )));
# 2) textToBePresentInElement () - Pričakovani pogoj čaka na element z določenim vzorcem niza.
Vzorčna koda
wait.until (ExpectedConditions.textToBePresentInElement (By.xpath ( “// div (@ id =‘ ForgotPass '“),„ besedilo je najdeno “ ));
dodaj na konec polja java
# 3) alertIsPresent () - Pričakovano stanje čaka, da se prikaže opozorilno polje.
Vzorčna koda
wait.until (ExpectedConditions.alertIsPresent ())! = null);
# 4) titleIs () - Pričakovano stanje čaka na stran z določenim naslovom.
Vzorčna koda
wait.until (ExpectedConditions.titleIs ( 'Gmail' ));
# 5) frameToBeAvailableAndSwitchToIt () - Pričakovani pogoj počaka, da bo okvir na voljo, in takoj, ko je okvir na voljo, nadzor samodejno preklopi nanj.
Vzorčna koda
wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (By.id (“ newframe ')));
Obstaja zelo pogosto uporabniško dejanje, ko uporabnik klikne gumbe za nazaj in naprej v spletnem brskalniku naprej in nazaj, da se v zgodovini brskalnika pomakne do različnih spletnih strani, obiskanih v trenutni seji. Za simulacijo takšnih dejanj, ki jih izvajajo uporabniki, WebDriver uvede ukaze Navigate.
Podrobneje preučimo te ukaze:
# 1) navigate (). Back ()
Ta ukaz uporabniku omogoča navigacijo na prejšnjo spletno stran.
Vzorčna koda:
driver.navigate (). back ();
Zgornji ukaz ne zahteva parametrov in uporabnika vrne na prejšnjo spletno stran v zgodovini spletnega brskalnika.
# 2) navigate (). Forward ()
Ta ukaz uporabniku omogoča navigacijo do naslednje spletne strani s sklicevanjem na zgodovino brskalnika.
Vzorčna koda:
driver.navigate (). forward ();
Zgornji ukaz ne zahteva parametrov in uporabnika preusmeri na naslednjo spletno stran v zgodovini spletnega brskalnika.
# 3) navigate (). Refresh ()
Ta ukaz uporabniku omogoča osvežitev trenutne spletne strani in s tem ponovno nalaganje vseh spletnih elementov.
Vzorčna koda:
driver.navigate (). refresh ();
Zgornji ukaz ne zahteva parametrov in znova naloži spletno stran.
# 4) navigate (). To ()
Ta ukaz uporabniku omogoča, da zažene novo okno spletnega brskalnika in se pomakne do navedenega URL-ja.
Vzorčna koda:
driver.navigate (). to (“http://google.com”);
Zgornji ukaz kot parameter zahteva spletni URL, nato pa odpre navedeni URL v sveže zagnanem spletnem brskalniku.
Zaključek
V tem Implicitno in eksplicitno čakanje v vadnici Selenium WebDriver , poskušali smo vas seznaniti s čakanjem WebDriverja. Razpravljali smo in izvajali tako eksplicitna kot implicitna čakanja. Hkrati smo razpravljali tudi o različnih navigacijskih ukazih.
Tukaj je bistvo tega članka:
- WebDriver omogoča uporabniku, da med razpoložljivimi čakalnimi vrstami izbere situacije, v katerih lahko postopek izvajanja zahteva nekaj sekund spanja, da naloži spletne elemente ali izpolni določen pogoj. V programu WebDriver sta na voljo dve vrsti čakanja.
- Implicitno počakajte
- Izrecno počakajte
- Implicitna čakanja se uporabljajo za zagotavljanje privzetega čakalnega časa med vsakim zaporednim testnim korakom / ukazom v celotnem testnem skriptu. Tako bi se nadaljnji preizkusni korak izvedel šele, ko poteče določen čas po izvedbi prejšnjega preizkusnega koraka / ukaza.
- Izrecna čakanja se uporabljajo za zaustavitev izvrševanja, dokler ni izpolnjen določen pogoj ali poteče najdaljši čas. Za razliko od implicitnih čakalnih vrst se eksplicitna čakanja uporabljajo samo za določen primerek.
- WebDriver uvaja razrede, kot sta WebDriverWait in ExpectedConditions, da uveljavi eksplicitna čakanja
- Pričakovani pogoji class nudi veliko pomoč pri reševanju scenarijev, v katerih moramo pred izvajanjem dejanskega preizkusnega koraka ugotoviti, ali se stanje pojavi.
- Razred ExpectedConditions ima široko paleto pričakovanih pogojev, do katerih je mogoče dostopati s pomočjo referenčne spremenljivke WebDriverWait in do ().
- Navigirajte po metodah / ukazi se uporabljajo za simulacijo vedenja uporabnika med krmarjenjem med različnimi spletnimi stranmi naprej in nazaj.
Naslednja vadnica št : Ko bomo nadaljevali z naslednjo vadnico na seznamu, bomo uporabnike seznanili z različnimi vrstami opozoril, ki se lahko pojavijo med dostopom do spletnih mest in njihovimi pristopi k ravnanju v WebDriverju. Vrste opozoril, na katere bi se osredotočili, so predvsem pojavna okna z opozorili in spletna opozorila. Ker vemo, da ravnanje s pojavnimi okni, ki temeljijo na oknih, presega zmožnosti WebDriverja, bi zato izvajali tudi nekaj drugih programov za obdelavo pojavnih oken.
Opomba za bralce : Do takrat lahko bralci avtomatizirajo scenarije z različnimi obremenitvami strani in dinamičnimi elementi, ki se pojavijo na zaslonu, z uporabo različnih pričakovanih pogojev in krmarjenje po ukazih.
Priporočeno branje
- Vadnica za kumare selena: Integracija kumar Java Selenium WebDriver
- Uvod v Selenium WebDriver - Vadnica za selenij št. 8
- Implementacija našega prvega skripta WebDriver - Vadnica # 10 za selenium WebDriver
- Pogosta vprašanja o selenu
- Kako ravnati z opozorili / pojavnimi okni v programu Selenium WebDriver - Vodič za selenij št. 16
- Priročnik za ustvarjanje obsežnih poročil v programu Selenium WebDriver
- Kako zagnati Selenium WebDriver v različnih priljubljenih brskalnikih
- Celotna namestitev in namestitev WebDriverja z Eclipse - Vadnica za selen št. 9