implicit explicit wait selenium webdriver
Научите имплицитно и експлицитно чекање у програму Селениум ВебДривер:
У претходном упутству покушали смо да вас упознамо са разним Петље и условне операције ВебДривера . Ове условне методе се често баве готово свим врстама опција видљивости за веб елементе.
Идемо напред у овоме бесплатна серија тренинга Селениум , ћемо дискутовати различите врсте чекања које пружа Селениум ВебДривер . Такође ћемо разговарати о в разне врсте навигационих опција доступно у ВебДривер-у.
Чекања помажу кориснику да реши проблеме приликом преусмеравања на различите веб странице освежавањем целе веб странице и поновним учитавањем нове веб елементи. Понекад могу бити и позиви Ајака. Дакле, временско кашњење се може видети током поновног учитавања веб страница и одражавања веб елемената.
Корисници се често могу кретати кроз разне веб странице напред и назад. Дакле, команде / методе навигације () које пружа ВебДривер помажу кориснику да симулира сценарије у стварном времену кретањем између веб страница у односу на историју веб прегледача.
ВебДривер опрема корисника са две генерације чекања како би се могао носити са поновљеним учитавањем странице с, учитавања веб елемената, изглед прозора, искачућих прозора и порука о грешкама и одраз веб елемената на веб страници.
- Имплицитно сачекајте
- Екплицит Ваит
Размотримо детаље о сваком од њих узимајући у обзир практични приступ.
Шта ћете научити:
- ВебДривер имплицитно сачекајте
- ВебДривер експлицитно сачекајте
- Очекивано стање
- Навигација помоћу ВебДривера
- Закључак
- Препоручено читање
ВебДривер имплицитно сачекајте
Имплицитна чекања се користе за обезбеђивање подразумеваног времена чекања (рецимо 30 секунди) између сваког узастопног корака / наредбе теста у целој тестној скрипти. Стога би се следећи тестни корак извршио тек када протекне 30 секунди након извршавања претходног тестног корака / наредбе.
Кључне напомене
- Имплицитно чекање је један ред кода и може се декларисати у начину постављања тест скрипте.
- У поређењу са експлицитним чекањем, имплицитно чекање је транспарентно и некомпликовано. Синтакса и приступ једноставнији су од експлицитног чекања.
Будући да се лако и једноставно примењује, имплицитно чекање такође доноси неколико недостатака. Доводи до времена извршавања тест скрипте, јер би свака наредба престала да чека одређено време пре наставка извршавања.
Стога, да би решио овај проблем, ВебДривер уводи експлицитна чекања где можемо изричито применити чекања кад год се појави ситуација уместо да насилно чекамо током извршавања сваког од корака теста.
Изјаве о увозу
увоз јава.утил.цонцуррент.ТимеУнит - Да бисмо могли да приступимо и применимо имплицитно чекање у нашим тест скриптама, дужни смо да увозимо овај пакет у нашу тестну скрипту.
Синтакса
дрв .манаге (). тимеоутс (). имплицитноВаит (10, ТимеУнит. СЕКУНДЕ );
Укључите горњи ред кода у тест скрипту убрзо након инстанцирања променљиве инстанце ВебДривер. Дакле, ово је све што је потребно за постављање имплицитног чекања у тест скрипту.
Цоде Валктхроугх
Имплицитно чекање налаже да се две вредности проследе као параметри. Први аргумент указује на време у нумеричким цифрама које систем треба да сачека. Други аргумент указује на скалу за мерење времена. Стога смо у горњем коду споменули „30“ секунди као подразумевано време чекања, а временска јединица је постављена на „секунди“.
ВебДривер експлицитно сачекајте
Изричита чекања се користе за заустављање извршења све док се не испуни одређени услов или не истекне максимално време. За разлику од имплицитних чекања, експлицитна чекања се примењују само за одређену инстанцу.
ВебДривер уводи класе попут ВебДриверВаит и ЕкпецтедЦондитионс како би наметнуо експлицитна чекања у тест скриптама. У оквиру ове расправе користићемо „гмаил.цом“ као примерак.
Сценариј који треба аутоматизовати
- Покрените веб прегледач и отворите „гмаил.цом“
- Унесите важеће корисничко име
- Унесите важећу лозинку
- Кликните на дугме за пријаву
- Сачекајте да дугме Нова порука буде видљиво након учитавања странице
ВебДривер код помоћу експлицитног чекања
Имајте на уму да бисмо за израду скрипти користили пројекат „Леарнинг_Селениум“ креиран у претходним водичима.
Корак 1 : Направите нову јава класу названу „Ваит_Демонстратион“ у оквиру пројекта „Леарнинг_Селениум“.
Корак 2 : Копирајте и налепите доњи код у класу „Ваит_Демонстратион.јава“.
Испод је тест скрипта која је еквивалентна горе поменутом сценарију.
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(); } }
Изјаве о увозу
- увоз орг. опенка.селениум.суппорт.уи.ЕкпецтедЦондитионс
- увоз орг. опенка.селениум.суппорт.уи.ВебДриверВаит
- Увезите горње пакете пре креирања скрипте. Пакети се односе на класу Селецт која је потребна за обраду падајућег менија.
Инстантирање објеката за класу ВебДриверВаит
ВебДриверВаит ваит = Нова ВебДриверВаит ( дрв , 30);
Стварамо референтну променљиву „чекај“ за класу ВебДриверВаит и инстанцујемо је помоћу инстанце ВебДривер и максималног времена чекања за отпуштање извршења. Наведено максимално време чекања мери се у „секундама“.
О инстанцирању ВебДривера говорило се у почетним водичима ВебДривера.
Очекивано стање
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click();
Горња команда чека одређено време или очекивано стање да се деси шта год се прво догоди или протекне.
Стога, да бисмо то могли да урадимо, користимо референтну променљиву „ваит“ класе ВебДриверВаит створену у претходном кораку са класом ЕкпецтедЦондитионс и стварним стањем које се очекује. Стога, чим се догоди очекивано стање, програмска контрола би прешла на следећи корак извршења, уместо да насилно чека целих 30 секунди.
У нашем узорку чекамо да дугме „састави“ буде присутно и учитано као део учитавања почетне странице и тако крећемо напред позивањем команде за клик на дугме „састави“.
Врсте очекиваних услова
Класа ЕкпецтедЦондитионс пружа велику помоћ у решавању сценарија где морамо утврдити да ли се стање може догодити пре извршавања стварног корака теста.
Класа ЕкпецтедЦондитионс долази са широким спектром очекиваних услова којима се може приступити уз помоћ референтне променљиве ВебДриверВаит и до () методе.
Размотримо опширно неколико њих:
# 1) елементТоБеЦлицкабле () - Очекивано стање чека да елемент може да се кликне, тј. Он треба да буде присутан / приказан / видљив на екрану, као и омогућен.
Узорак кода
ваит.унтил (ЕкпецтедЦондитионс.елементТоБеЦлицкабле (Би.кпатх ( „// див (садржи (текст (),’ САСТАВИ ’))” )));
# 2) тектТоБеПресентИнЕлемент () - Очекивани услов чека елемент који има одређени образац низа.
Узорак кода
ваит.унтил (ЕкпецтедЦондитионс.тектТоБеПресентИнЕлемент (Би.кпатх ( „// див (@ ид =‘ заборавиоПасс '“),„ текст који треба наћи “ ));
шта је иоманип у ц ++-у
# 3) алертИсПресент () - Очекивано стање чека да се појави оквир упозорења.
Узорак кода
ваит.унтил (ЕкпецтедЦондитионс.алертИсПресент ())! = нулл);
# 4) титлеИс () - Очекивано стање чека страницу са одређеним насловом.
Узорак кода
ваит.унтил (ЕкпецтедЦондитионс.титлеИс ( 'Гмаил' ));
# 5) фрамеТоБеАваилаблеАндСвитцхТоИт () - Очекивано стање чека да оквир буде доступан, а онда чим оквир буде доступан, контрола се аутоматски пребацује на њега.
Узорак кода
ваит.унтил (ЕкпецтедЦондитионс.фрамеТоБеАваилаблеАндСвитцхТоИт (Би.ид (“ невфраме ')));
Постоји врло честа радња корисника када корисник кликне на дугмад за назад и напред веб прегледача уназад да би се кретао до различитих веб страница посећених у тренутној сесији у историји прегледача. Тако да би симулирао радње које извршавају корисници, ВебДривер уводи команде Навигате.
Размотримо ове наредбе детаљно:
# 1) навигате (). Бацк ()
Ова наредба омогућава кориснику да пређе на претходну веб страницу.
Пример кода:
дривер.навигате (). бацк ();
Горња команда не захтева параметре и враћа корисника на претходну веб страницу у историји веб прегледача.
# 2) навигате (). Форвард ()
Ова команда омогућава кориснику да пређе на следећу веб страницу са референцом на историју прегледача.
Пример кода:
дривер.навигате (). форвард ();
Горња команда не захтева параметре и корисника преусмерава на следећу веб страницу у историји веб прегледача.
# 3) навигате (). Рефресх ()
Ова наредба омогућава кориснику да освежи тренутну веб страницу чиме поново учитава све веб елементе.
Пример кода:
дривер.навигате (). рефресх ();
Горња команда не захтева параметре и поново учитава веб страницу.
# 4) навигате (). То ()
Ова команда омогућава кориснику да покрене нови прозор веб прегледача и пређе на наведену УРЛ адресу.
Пример кода:
дривер.навигате (). то („хттп://гоогле.цом“);
Горе наведена наредба захтева веб УРЛ као параметар, а затим отвара наведену УРЛ адресу у тек покренутом веб прегледачу.
Закључак
У ово Имплицитно и експлицитно чекање у водичу за Селениум ВебДривер , покушали смо да вас упознамо са чекањима ВебДривера. Разговарали смо и вежбали и експлицитна и имплицитна чекања. Истовремено смо разговарали и о различитим командама за навигацију.
Ево суштине овог чланка:
- ВебДривер омогућава кориснику да бира између доступних чекања за руковање ситуацијама у којима ток извршења може захтевати спавање неколико секунди како би учитао веб елементе или испунио одређени услов. У ВебДриверу су доступне две врсте чекања.
- Имплицитно сачекајте
- Екплицит Ваит
- Имплицитна чекања користе се за обезбеђивање подразумеваног времена чекања између сваког узастопног корака / наредбе теста у целој скрипти за тестирање. Дакле, наредни тестни корак извршио би се само када је одређено време протекло након извршавања претходног тестног корака / наредбе.
- Изричита чекања се користе за заустављање извршења све док се не испуни одређени услов или не истекне максимално време. За разлику од имплицитних чекања, експлицитна чекања се примењују само за одређену инстанцу.
- ВебДривер уводи класе попут ВебДриверВаит и ЕкпецтедЦондитионс да би наметнуо експлицитна чекања
- Очекивани услови класа пружа велику помоћ у решавању сценарија у којима морамо да утврдимо да ли се стање може догодити пре извршавања стварног корака теста.
- Класа ЕкпецтедЦондитионс долази са широким спектром очекиваних услова којима се може приступити уз помоћ референтне променљиве ВебДриверВаит и до () методе.
- Навигација () методама / команде се користе за симулацију понашања корисника током навигације између различитих веб страница напред и назад.
Следећи водич # 16 : Прелазећи на следећи водич на листи, упознали бисмо кориснике са различитим врстама упозорења која се могу појавити током приступа веб локацијама и њиховим приступима руковању у ВебДриверу. Врсте упозорења на које бисмо се фокусирали су углавном - искачући прозори упозорења засновани на прозорима и искачући прозори упозорења засновани на мрежи. Како знамо да руковање искачућим прозорима заснованим на прозорима превазилази могућности ВебДривер-а, стога бисмо такође користили неке независне услужне програме за руковање искачућим прозорима.
Напомена за читаоце : До тада читаоци могу аутоматизовати сценарије са различитим учитавањима страница и динамичким елементима који искачу на екрану користећи разне очекиване услове и команде за навигацију.
Препоручено читање
- Водич за краставац селениј: Интеграција Јава Селениум ВебДривер краставца
- Увод у Селениум ВебДривер - Водич за селен бр. 8
- Примена наше прве скрипте за ВебДривер - Водич бр. 10 за Селениум ВебДривер
- Честа питања о селену
- Како се рукује упозорењима / искачућим прозорима у програму Селениум ВебДривер - Водич за селен # 16
- Водич за генерисање екстензивних извештаја у програму Селениум ВебДривер
- Како покренути Селениум ВебДривер у различитим популарним прегледачима
- Целокупно подешавање и инсталирање ВебДривер-а помоћу програма Ецлипсе - Водич за селен бр. 9