implicit explicit wait selenium webdriver
Naučte se implicitní a explicitní čekání v selenu WebDriver:
V předchozím tutoriálu jsme se pokusili seznámit vás s různými Opakování a podmíněné operace WebDriveru . Tyto podmíněné metody se často zabývají téměř všemi typy možností viditelnosti webových prvků.
Pokračujeme v tom bezplatná série školení selenu , prodiskutujeme různé typy čekání poskytované Selenium WebDriver . Budeme také diskutovat o v různé typy možností navigace k dispozici ve WebDriveru.
Funkce Waits pomůže uživateli vyřešit problémy při přesměrování na různé webové stránky obnovením celé webové stránky a opětovným načtením nové webové prvky. Občas mohou být také volání Ajaxu. Při opětovném načítání webových stránek a odrážení webových prvků lze tedy pozorovat časové zpoždění.
Uživatelé se často setkávají s procházením různých webových stránek tam a zpět. Příkazy / metody navigate () poskytované WebDriverem tak pomáhají uživateli simulovat scénáře v reálném čase procházením mezi webovými stránkami s odkazem na historii webového prohlížeče.
WebDriver vybavuje uživatele dvěma genezemi čekání, aby zvládl opakované načítání stránky s, načítání webových prvků, vzhled oken, vyskakovací okna a chybové zprávy a odraz webových prvků na webové stránce.
- Implicitní počkat
- Explicitní čekání
Pojďme si podrobně promluvit o každém z nich s ohledem na praktický přístup.
Co se naučíte:
- WebDriver Implicit Wait
- WebDriver Explicit Wait
- Očekávaný stav
- Navigace pomocí WebDriver
- Závěr
- Doporučené čtení
WebDriver Implicit Wait
Implicitní čekání se používají k poskytnutí výchozí doby čekání (řekněme 30 sekund) mezi každým po sobě jdoucím testovacím krokem / příkazem v celém testovacím skriptu. Následný testovací krok by se tedy provedl až po uplynutí 30 sekund po provedení předchozího testovacího kroku / příkazu.
Klíčové poznámky
- Implicitní čekání je jeden řádek kódu a lze jej deklarovat v metodě nastavení testovacího skriptu.
- Ve srovnání s Explicitním čekáním je implicitní čekání transparentní a nekomplikované. Syntaxe a přístup jsou jednodušší než explicitní čekání.
Snadné a snadné použití, implicitní čekání přináší také několik nevýhod. Výsledkem je doba spuštění testovacího skriptu, protože každý z příkazů by přestal čekat na stanovenou dobu, než bude pokračovat v provádění.
Abychom tedy tento problém vyřešili, WebDriver zavádí Explicitní čekání, kde můžeme explicitně použít čekání, kdykoli nastane situace, namísto vynuceného čekání při provádění každého z testovacích kroků.
Importovat prohlášení
import java.util.concurrent.TimeUnit - Abychom mohli přistupovat a používat implicitní čekání v našich testovacích skriptech, jsme povinni importovat tento balíček do našeho testovacího skriptu.
Syntax
drv .manage (). timeouts (). implicitlyWait (10, TimeUnit. SEKUNDY );
Zahrňte výše uvedený řádek kódu do testovacího skriptu brzy po vytvoření instance proměnné instance WebDriver. To je tedy vše, co je nutné k nastavení implicitního čekání do testovacího skriptu.
Návod na kód
Implicitní čekání nařizuje předat dvě hodnoty jako parametry. První argument označuje čas v numerických číslicích, na který musí systém čekat. Druhý argument označuje stupnici měření času. Ve výše uvedeném kódu jsme tedy uvedli „30“ sekund jako výchozí dobu čekání a časová jednotka byla nastavena na „sekundy“.
WebDriver Explicit Wait
Explicitní čekání se používá k zastavení provádění, dokud není splněna určitá podmínka nebo neuplyne maximální čas. Na rozdíl od implicitních čekání se explicitní čekání používají pouze pro konkrétní instanci.
WebDriver zavádí třídy jako WebDriverWait a ExpectedConditions k vynucení Explicitního čekání do testovacích skriptů. V rámci této diskuse použijeme jako vzor „gmail.com“.
Scénář k automatizaci
- Spusťte webový prohlížeč a otevřete „gmail.com“
- Zadejte platné uživatelské jméno
- Zadejte platné heslo
- Klikněte na tlačítko přihlášení
- Po načtení stránky počkejte, až se zobrazí tlačítko Compose
Kód WebDriver pomocí Explicitního čekání
Vezměte prosím na vědomí, že pro vytvoření skriptu bychom použili projekt „Learning_Selenium“ vytvořený v dřívějších cvičeních.
Krok 1 : Vytvořte novou třídu Java s názvem „Wait_Demonstration“ v rámci projektu „Learning_Selenium“.
Krok 2 : Zkopírujte a vložte níže uvedený kód do třídy „Wait_Demonstration.java“.
Níže je uveden testovací skript, který je ekvivalentní výše uvedenému scénáři.
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(); } }
Importovat prohlášení
- import org. openqa.selenium.support.ui.ExectedConditions
- import org. openqa.selenium.support.ui.WebDriverWait
- Před vytvořením skriptu importujte výše uvedené balíčky. Balíčky odkazují na třídu Select, která je nutná pro zpracování rozbalovací nabídky.
Instance objektu pro třídu WebDriverWait
Čekat = Nový WebDriverWait ( drv 30);
Vytvoříme referenční proměnnou „počkejte“ pro třídu WebDriverWait a vytvoříte ji pomocí instance WebDriver a maximální doby čekání na propuštění. Maximální uvedená doba čekání se měří v „sekundách“.
Instance WebDriver byla popsána v počátečních cvičeních WebDriver.
Očekávaný stav
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div[contains(text(),'COMPOSE')]'))); drv.findElement(By.xpath('//div[contains(text(),'COMPOSE')]')).click();
Výše uvedený příkaz čeká na stanovenou dobu nebo očekávanou podmínku, podle toho, co nastane nebo uplyne dříve.
Abychom to mohli udělat, používáme referenční proměnnou „počkat“ třídy WebDriverWait vytvořenou v předchozím kroku s třídou ExpectedConditions a skutečnou podmínkou, která se očekává. Jakmile se tedy vyskytne očekávaná podmínka, ovládací prvek programu by se místo násilného čekání na celých 30 sekund přesunul na další krok spuštění.
V našem vzorku počkáme, až bude tlačítko „sestavit“ přítomno a načteno jako součást načtení domovské stránky, a tak se posuneme vpřed voláním příkazu kliknutí na tlačítku „sestavení“.
Druhy očekávaných podmínek
Třída ExpectedConditions poskytuje velkou pomoc při řešení scénářů, kde musíme zjistit, zda nastane podmínka před provedením skutečného kroku testu.
Třída ExpectedConditions přichází s širokou škálou očekávaných podmínek, ke kterým lze přistupovat pomocí referenční proměnné WebDriverWait a metody do ().
Pojďme se podrobně zabývat několika z nich:
# 1) elementToBeClickable () - Očekávaná podmínka čeká na prvek, na který lze kliknout, tj. Měl by být přítomen / zobrazen / viditelný na obrazovce a také povolen.
Ukázkový kód
wait.until (ExpectedConditions.elementToBeClickable (By.xpath ( „// div [contains (text (),‘ COMPOSE ‘)]“ “ )));
# 2) textToBePresentInElement () - Očekávaná podmínka čeká na prvek, který má určitý vzor řetězce.
Ukázkový kód
wait.until (ExpectedConditions.textToBePresentInElement (By.xpath ( “// div [@ id =‘ rememberPass '“),„ text k nalezení “ ));
jaké programy mohou upravovat soubory PDF
# 3) alertIsPresent () - Očekávaná podmínka čeká na zobrazení výstražného pole.
Ukázkový kód
wait.until (ExpectedConditions.alertIsPresent ())! = null);
# 4) titleIs () - Očekávaná podmínka čeká na stránku s konkrétním názvem.
Ukázkový kód
wait.until (ExpectedConditions.titleIs ( „Gmail“ ));
# 5) frameToBeAvailableAndSwitchToIt () - Očekávaná podmínka čeká na dostupnost rámečku a poté, jakmile je rámeček k dispozici, se na něj ovládací prvek automaticky přepne.
Ukázkový kód
wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (By.id (“ nový snímek ')));
Existuje velmi běžná akce uživatele, kdy uživatel klikne na tlačítka zpět a vpřed ve webovém prohlížeči tam a zpět a přejde tak na různé webové stránky navštívené v aktuální relaci v historii prohlížeče. Pro simulaci takových akcí prováděných uživateli zavádí WebDriver příkazy Navigate.
Podívejme se podrobně na tyto příkazy:
# 1) navigovat (). Zpět ()
Tento příkaz umožňuje uživateli přejít na předchozí webovou stránku.
Ukázkový kód:
driver.navigate (). back ();
Výše uvedený příkaz nevyžaduje žádné parametry a vrací uživatele na předchozí webovou stránku v historii webového prohlížeče.
# 2) navigovat (). Vpřed ()
Tento příkaz umožňuje uživateli přejít na další webovou stránku s odkazem na historii prohlížeče.
Ukázkový kód:
driver.navigate (). forward ();
Výše uvedený příkaz nevyžaduje žádné parametry a přesměruje uživatele na další webovou stránku v historii webového prohlížeče.
# 3) navigate (). Refresh ()
Tento příkaz umožňuje uživateli aktualizovat aktuální webovou stránku a tím znovu načíst všechny webové prvky.
Ukázkový kód:
driver.navigate (). refresh ();
Výše uvedený příkaz nevyžaduje žádné parametry a znovu načte webovou stránku.
# 4) přejděte (). Do ()
Tento příkaz umožňuje uživateli spustit nové okno webového prohlížeče a přejít na zadanou adresu URL.
Ukázkový kód:
driver.navigate (). to („http://google.com“);
Výše uvedený příkaz vyžaduje jako parametr webovou adresu URL a poté otevře zadanou adresu URL v nově spuštěném webovém prohlížeči.
Závěr
V tomhle Implicitní a explicitní čekání v kurzu Selenium WebDriver , pokusili jsme se vás seznámit s čekáním WebDriveru. Diskutovali jsme a procvičovali explicitní i implicitní čekání. Současně jsme také diskutovali o různých navigačních příkazech.
Zde jsou podstata tohoto článku:
- WebDriver umožňuje uživateli vybrat si mezi dostupnými čekáními na zvládnutí situací, kdy tok provádění může vyžadovat několik sekund spánku, aby bylo možné načíst webové prvky nebo splnit konkrétní podmínku. Ve WebDriveru jsou k dispozici dva typy čekání.
- Implicitní počkat
- Explicitní čekání
- Implicitní čekání se používají k poskytnutí výchozí čekací doby mezi každým následným krokem / příkazem testu v celém testovacím skriptu. Následný testovací krok by se tedy provedl, až když po provedení předchozího testovacího kroku / příkazu uplynula zadaná doba.
- Explicitní čekání slouží k zastavení provádění, dokud není splněna určitá podmínka nebo neuplyne maximální čas. Na rozdíl od implicitních čekání se explicitní čekání používají pouze pro konkrétní instanci.
- WebDriver zavádí třídy jako WebDriverWait a ExpectedConditions k vynucení výslovného čekání
- Očekávané podmínky třída poskytuje velkou pomoc při řešení scénářů, kde musíme zjistit, zda nastane podmínka před provedením skutečného kroku testu.
- Třída ExpectedConditions přichází s širokou škálou očekávaných podmínek, ke kterým lze přistupovat pomocí referenční proměnné WebDriverWait a metody do ().
- Metody Navigate () / příkazy se používají k simulaci chování uživatele při procházení různých webových stránek tam a zpět.
Další výuka č. 16 : V dalším výukovém programu v seznamu bychom uživatele seznámili s různými typy výstrah, které se mohou objevit při přístupu na webové stránky a jejich přístupy k manipulaci ve WebDriveru. Typy výstrah, na které bychom se zaměřili, jsou hlavně - vyskakovací okna s výstrahami na základě oken a vyskakovací okna s výstrahami na webu. Jelikož víme, že manipulace s vyskakovacími okny založenými na oknech je nad možnosti WebDriveru, procvičujeme tedy také některé nástroje třetích stran ke zpracování vyskakovacích oken.
Poznámka pro čtenáře : Do té doby mohou čtenáři automatizovat scénáře s různými načítáním stránek a dynamickými prvky, které se objevují na obrazovce pomocí různých očekávaných podmínek a navigačních příkazů.
Doporučené čtení
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Úvod do selenu WebDriver - Selenium Tutorial # 8
- Implementace našeho prvního skriptu WebDriver - výuka selenu WebDriver # 10
- Selenium FAQ
- Jak zpracovat upozornění / vyskakovací okna v Selenium WebDriver - Selenium Tutorial # 16
- Průvodce generováním rozsahu zpráv v selenu WebDriver
- Jak spustit selen WebDriver v různých populárních prohlížečích
- Úplné nastavení a instalace WebDriveru s Eclipse - výuka selenu č. 9