implicit explicit wait selenium webdriver
Naučte sa implicitné a explicitné čakanie v ovládači selénu WebDriver:
V predchádzajúcom tutoriáli sme sa pokúsili oboznámiť vás s rôznymi Opakovanie a podmienené operácie WebDriveru . Tieto podmienené metódy sa často zaoberajú takmer všetkými typmi možností viditeľnosti webových prvkov.
V tomto napredujeme bezplatná tréningová séria selénu , budeme diskutovať rôzne typy čakania poskytované serverom Selenium WebDriver . Budeme diskutovať aj o v rôzne typy možností navigácie k dispozícii vo WebDriveri.
Čaká na pomoc používateľovi pri riešení problémov pri presmerovaní na rôzne webové stránky obnovením celej webovej stránky a opätovným načítaním novej webové prvky. Občas môžu prichádzať aj hovory Ajaxu. Je teda možné vidieť časový posun pri opätovnom načítaní webových stránok a odrážaní webových prvkov.
Používateľov často stretávame s prechádzaním rôznymi webovými stránkami tam a späť. Príkazy / metódy navigate () poskytované WebDriverom teda pomáhajú používateľovi simulovať scenáre v reálnom čase prechádzaním medzi webovými stránkami s odkazom na históriu webového prehliadača.
WebDriver vybavuje používateľa dvoma genezami čakania, aby zvládol opakujúce sa načítanie stránky s, načítanie webových prvkov, vzhľad okien, vyskakovacie okná a chybové správy a odraz webových prvkov na webovej stránke.
- Implicitné čakanie
- Explicitné čakanie
Poďme si každý z nich podrobne rozobrať s ohľadom na praktický prístup.
Čo sa dozviete:
- WebDriver Implicitné čakanie
- WebDriver Explicit Wait
- Očakávaný stav
- Navigácia pomocou nástroja WebDriver
- Záver
- Odporúčané čítanie
WebDriver Implicitné čakanie
Implicitné čakania sa používajú na zabezpečenie predvolenej doby čakania (napríklad 30 sekúnd) medzi každým po sebe idúcim testovacím krokom / príkazom v celom testovacom skripte. Následný krok testu by sa teda vykonal až po uplynutí 30 sekúnd od vykonania predchádzajúceho kroku / príkazu testu.
Kľúčové poznámky
- Implicitné čakanie je jeden riadok kódu a je možné ho deklarovať v metóde nastavenia testovacieho skriptu.
- V porovnaní s Explicitným čakaním je implicitné čakanie transparentné a nekomplikované. Syntax a prístup sú jednoduchšie ako explicitné čakanie.
Ľahké a jednoduché použitie, implicitné čakanie má tiež niekoľko nevýhod. Dochádza k zvýšeniu času vykonania testovacieho skriptu, pretože každý z príkazov by prestal čakať na stanovenú dobu pred obnovením vykonávania.
S cieľom vyriešiť tento problém preto WebDriver zavádza Explicitné čakania, pri ktorých môžeme explicitne použiť čakania vždy, keď nastane situácia, namiesto toho, aby ste dôrazne čakali pri vykonávaní každého z krokov testu.
Výpisy z dovozu
dovoz java.util.concurrent.TimeUnit - Aby sme mohli v našich testovacích skriptoch získať prístup a použiť implicitné čakanie, sme povinní importovať tento balík do nášho testovacieho skriptu.
Syntax
drv .manage (). timeouts (). implicitlyWait (10, TimeUnit. SEKUNDY );
Krátko po vytvorení inštančnej premennej inštancie WebDriver zahrňte vyššie uvedený riadok kódu do testovacieho skriptu. To je teda všetko, čo je potrebné na nastavenie implicitného čakania na váš testovací skript.
Návod na použitie kódu
Implicitné čakanie povoľuje odovzdanie dvoch hodnôt ako parametrov. Prvý argument označuje čas v numerických čísliciach, na ktorý musí systém čakať. Druhý argument označuje stupnicu merania času. Preto sme vo vyššie uvedenom kóde spomenuli „30“ sekúnd ako predvolenú dobu čakania a časová jednotka bola nastavená na „sekundy“.
WebDriver Explicit Wait
Explicitné čakania sa používajú na zastavenie vykonávania, kým nie je splnená konkrétna podmienka alebo kým neuplynie maximálny čas. Na rozdiel od implicitných čakaní sa explicitné čakania používajú iba pre konkrétnu inštanciu.
WebDriver predstavuje triedy ako WebDriverWait a ExpectedConditions na vynútenie explicitného čakania do testovacích skriptov. V rámci tejto diskusie použijeme ako ukážku „gmail.com“.
Scenár, ktorý sa má automatizovať
- Spustite webový prehliadač a otvorte doménu „gmail.com“.
- Zadajte platné používateľské meno
- Zadajte platné heslo
- Kliknite na tlačidlo prihlásenia
- Počkajte, kým sa po načítaní stránky zobrazí tlačidlo Napísať
Kód WebDriver pomocou explicitného čakania
Upozorňujeme, že na vytvorenie skriptu by sme použili projekt „Learning_Selenium“, ktorý sme vytvorili v predchádzajúcich tutoriáloch.
Krok 1 : Vytvorte novú triedu java s názvom „Wait_Demonstration“ v rámci projektu „Learning_Selenium“.
Krok 2 : Skopírujte a vložte nasledujúci kód do triedy „Wait_Demonstration.java“.
Ďalej je uvedený testovací skript, ktorý je ekvivalentný vyššie uvedenému scenáru.
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(); } }
Výpisy z dovozu
- dovoz org. openqa.selenium.support.ui.Očakávané podmienky
- dovoz org. openqa.selenium.support.ui.WebDriverWait
- Importujte vyššie balíky pred vytvorením skriptu. Balíky odkazujú na triedu Select, ktorá je potrebná na spracovanie rozbaľovacej ponuky.
Vytvorenie inštancie objektu pre triedu WebDriverWait
Čakajte Nový WebDriverWait ( drv 30);
Vytvoríme referenčnú premennú „wait“ pre triedu WebDriverWait a vytvoríme jej inštanciu pomocou inštancie WebDriver a maximálneho času čakania na prepúšťanie. Maximálna uvedená doba čakania sa meria v „sekundách“.
O inštancii WebDriveru sme hovorili v úvodných tutoriáloch produktu WebDriver.
Očakávaný stav
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click();
Vyššie uvedený príkaz čaká na stanovený čas alebo na očakávaný stav, podľa toho, čo nastane alebo uplynie skôr.
Aby sme to mohli urobiť, použijeme referenčnú premennú „počkajte“ triedy WebDriverWait vytvorenú v predchádzajúcom kroku s triedou ExpectedConditions a skutočným stavom, ktorý sa očakáva. Preto hneď ako nastane očakávaná podmienka, riadenie programu by sa presunulo na ďalší krok vykonania namiesto toho, aby vynútene čakalo celých 30 sekúnd.
V našom exemplári počkáme, kým bude tlačidlo „zostaviť“ prítomné a načíta sa ako súčasť načítania domovskej stránky, a teda pokračujeme volaním príkazu kliknutia na tlačidlo „zostaviť“.
Typy očakávaných podmienok
Trieda ExpectedConditions poskytuje veľkú pomoc pri riešení scenárov, v ktorých musíme pred vykonaním skutočného kroku testu zistiť, či dôjde k nejakej podmienke.
Trieda ExpectedConditions prichádza so širokou škálou očakávaných podmienok, ku ktorým je možné získať prístup pomocou referenčnej premennej WebDriverWait a metódy do ().
Poďme diskutovať o niekoľkých z nich zdĺhavo:
# 1) elementToBeClickable () - Očakávaná podmienka čaká na kliknutie prvku, t. J. Mal by byť prítomný / zobrazený / viditeľný na obrazovke a tiež povolený.
Vzorový kód
wait.until (ExpectedConditions.elementToBeClickable (By.xpath ( „// div (contains (text (),‘ COMPOSE ‘))“ “ )));
# 2) textToBePresentInElement () - Očakávaná podmienka čaká na prvok, ktorý má určitý reťazcový vzor.
Vzorový kód
wait.until (ExpectedConditions.textToBePresentInElement (By.xpath ( “// div (@ id =‘ zabudnutýPass ““), „text je možné nájsť“ ));
Ako aktualizujem svoj BIOS na Windows 10
# 3) alertIsPresent () - Očakávaný stav čaká na zobrazenie výstražného okna.
Vzorový kód
wait.until (ExpectedConditions.alertIsPresent ())! = null);
# 4) titleIs () - Očakávaný stav čaká na stránku s konkrétnym názvom.
Vzorový kód
wait.until (ExpectedConditions.titleIs ( „Gmail“ ));
# 5) frameToBeAvailableAndSwitchToIt () - Očakávaný stav čaká na sprístupnenie rámčeka a potom, keď je rámček k dispozícii, sa na ňu ovládací prvok automaticky prepne.
Vzorový kód
wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (By.id („ nový rám ')));
Existuje veľmi častá akcia používateľa, keď používateľ klikne na tlačidlá dozadu a dopredu vo webovom prehľadávači dozadu a prejde tak na rôzne webové stránky navštívené v aktuálnej relácii v histórii prehľadávača. Na účely simulácie takýchto akcií vykonávaných používateľmi predstavuje WebDriver príkazy Navigate.
Pozrime sa podrobne na tieto príkazy:
# 1) navigovať (). Späť ()
Tento príkaz umožňuje používateľovi prejsť na predchádzajúcu webovú stránku.
Ukážkový kód:
driver.navigate (). späť ();
Vyššie uvedený príkaz nevyžaduje žiadne parametre a vráti používateľa na predchádzajúcu webovú stránku v histórii webového prehliadača.
# 2) navigovať (). Dopredu ()
Tento príkaz umožňuje používateľovi prejsť na ďalšiu webovú stránku s odkazom na históriu prehliadača.
Ukážkový kód:
driver.navigate (). forward ();
Vyššie uvedený príkaz nevyžaduje žiadne parametre a presmeruje používateľa na ďalšiu webovú stránku v histórii webového prehliadača.
# 3) navigate (). Refresh ()
Tento príkaz umožňuje používateľovi aktualizovať aktuálnu webovú stránku, čím znovu načíta všetky webové prvky.
Ukážkový kód:
driver.navigate (). refresh ();
Vyššie uvedený príkaz nevyžaduje žiadne parametre a znovu zavedie webovú stránku.
# 4) navigovať (). Do ()
Tento príkaz umožňuje používateľovi otvoriť nové okno webového prehliadača a prejsť na zadanú adresu URL.
Ukážkový kód:
driver.navigate (). to („http://google.com“);
Vyššie uvedený príkaz vyžaduje ako parameter webovú adresu URL a potom otvorí zadanú adresu URL v čerstvo spustenom webovom prehliadači.
Záver
V tomto Implicitné a explicitné čakanie vo výučbe selénu WebDriver , pokúsili sme sa vás oboznámiť s čakaniami WebDriveru. Diskutovali sme a uplatňovali sme explicitné aj implicitné čakania. Zároveň sme diskutovali aj o rôznych príkazoch navigácie.
Tu sú základné informácie o tomto článku:
- WebDriver umožňuje používateľovi vybrať si z dostupných čakaní na zvládnutie situácií, keď tok vykonania môže vyžadovať niekoľkosekundový spánok, aby sa mohli načítať webové prvky alebo splniť konkrétna podmienka. V aplikácii WebDriver sú k dispozícii dva typy čakania.
- Implicitné čakanie
- Explicitné čakanie
- Implicitné čakanie sa používajú na poskytnutie predvolenej doby čakania medzi jednotlivými po sebe idúcimi krokmi / príkazmi testu v celom testovacom skripte. Následný krok testu by sa teda vykonal až po uplynutí zadaného času po vykonaní predchádzajúceho kroku / príkazu testu.
- Explicitné čakanie sa používajú na zastavenie exekúcie, kým nie je splnená konkrétna podmienka alebo neuplynul maximálny čas. Na rozdiel od implicitných čakaní sa explicitné čakania používajú iba pre konkrétnu inštanciu.
- WebDriver predstavuje triedy ako WebDriverWait a ExpectedConditions na vynútenie výslovného čakania
- Očakávané podmienky triedy poskytuje veľkú pomoc pri riešení scenárov, v ktorých sa musíme pred vykonaním skutočného kroku testu presvedčiť, či nastane stav.
- Trieda ExpectedConditions prichádza so širokou škálou očakávaných podmienok, ku ktorým je možné získať prístup pomocou referenčnej premennej WebDriverWait a metódy do ().
- Navigácia () metódy Príkazy / sa používajú na simuláciu správania používateľa pri navigácii medzi rôznymi webovými stránkami tam a späť.
Nasledujúci návod č. 16 : Pri prechode na ďalší tutoriál v zozname by sme používateľov mali oboznámiť s rôznymi typmi varovaní, ktoré sa môžu zobraziť pri prístupe na webové stránky, a s ich prístupmi k manipulácii v WebDriveri. Typy upozornení, na ktoré by sme sa zamerali, sú hlavne - vyskakovacie okná s oknami založené na systéme Windows a vyskakovacie okná s vyskakovacím oknom založené na webe. Pretože vieme, že manipulácia s automaticky otváranými oknami založenými na oknách je nad možnosti aplikácie WebDriver, vykonali by sme preto aj niektoré obslužné programy tretích strán na prácu s pop-up oknami.
Poznámka pre čitateľov : Zatiaľ môžu čitatelia automatizovať scenáre, ktoré majú rôzne načítania stránok a dynamické prvky, ktoré sa na obrazovke objavujú, pomocou rôznych očakávaných podmienok a navigačných príkazov.
Odporúčané čítanie
- Výukový program Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Úvod do softvéru Selenium WebDriver - Výučba selénu č. 8
- Implementácia nášho prvého skriptu WebDriver - výučba selénu WebDriver č. 10
- Časté otázky o seléne
- Ako zaobchádzať s upozorneniami alebo vyskakovacími oknami v ovládači Selenium WebDriver - selén - návod č
- Sprievodca generovaním rozsahu správ v selenovom webovom ovládači
- Ako spustiť selenový webový ovládač v rôznych populárnych prehliadačoch
- Celé nastavenie a inštalácia WebDriver s výučbou Eclipse - Selenium č. 9