Шта је ЈаваСцриптЕкецутор?
ЈаваСцриптЕкецутор је интерфејс који помаже у извршавању ЈаваСцрипт-а путем Селениум Вебдривер-а. ЈаваСцриптЕкецутор пружа две методе "екецутесцрипт" & "екецутеАсинцСцрипт" за покретање јавасцрипта на изабраном прозору или тренутној страници.
У овом упутству ћете научити -
- Шта је ЈаваСцриптЕкецутор?
- Зашто нам је потребан ЈаваСцриптЕкеецутер?
- ЈаваСцриптЕкецутор методе
- Пример екецутеАсинцСцрипт
- Пример 1: Спавање у прегледачу који се тестира.
- Пример екецутеСцрипт-а
- 1) Пример: Кликните на дугме за пријаву и генерисање прозора упозорења
- 2) Пример: Снимите податке за стругање и идите на различите странице
- 3) Пример: Померите се надоле
Зашто нам је потребан ЈаваСцриптЕкеецутер?
У програму Селениум Вебдривер, локатори попут КСПатх, ЦСС итд. Користе се за идентификацију и извођење операција на веб страници.
У случају да ови локатори не раде, можете користити ЈаваСцриптЕкецутор. Можете да користите ЈаваСцриптЕкецутор да бисте извршили жељену операцију на веб елементу.
Селениум подржава јаваСцриптЕкецутор. Нема потребе за додатним додатком или додатком. Само треба да увезете ( орг.опенка.селениум.ЈавасцриптЕкецутор ) у скрипту како бисте користили ЈаваСцриптЕкецутор.
ЈаваСцриптЕкецутор методе
- екецутеАсинцСцрипт
Помоћу асинхроне скрипте ваша страница се брже приказује. Уместо да приморате кориснике да сачекају преузимање скрипте пре него што се страница прикаже. Ова функција ће извршити асинхрони део ЈаваСцрипт-а у контексту тренутно изабраног оквира или прозора у програму Селениум. Тако извршени ЈС је једнонитни са разном функцијом повратног позива која се синхроно изводи.
- екецутеСцрипт
Овај метод извршава ЈаваСцрипт у контексту тренутно изабраног оквира или прозора у програму Селениум. Скрипта коришћена у овој методи ради у телу анонимне функције (функције без имена). Такође му можемо пренети сложене аргументе.
Скрипта може да врати вредности. Враћени типови података су
- Боолеан
- Дуго
- Низ
- Листа
- ВебЕлемент.
Основна синтакса за ЈавасцриптЕкецутор дата је у наставку:
Синтакса:
ЈавасцриптЕкецутор јс = (ЈавасцриптЕкецутор) управљачки програм;јс.екецутеСцрипт (скрипта, аргументи);
- Скрипта - ово је ЈаваСцрипт који треба да се изврши.
- Аргументи - то су аргументи у скрипти. Није обавезно.
Пример екецутеАсинцСцрипт
Коришћење екецутеАсинцСцрипт помаже у побољшању перформанси теста. Омогућава писање теста више попут уобичајеног кодирања.
ЕкецСинц блокира даље радње које врши претраживач Селениум, али екецАсинц не блокира радње. Послат ће повратни позив серверу за тестирање када се скрипта заврши. То значи да ће све унутар скрипте извршити прегледач, а не сервер.
Пример 1: Спавање у прегледачу који се тестира.
У овом сценарију користићемо демо локацију „Гуру99“ за илустрацију екецутеАсинцСцрипт. У овом примеру ћете
- Покрените прегледач.
- Отворена страница „хттп://демо.гуру99.цом/В4/“.
- Апликација чека 5 секунди да изврши даљу акцију.
Корак 1) Снимите време почетка пре него што причекате 5 секунди (5000 милисекунди) методом екецутеАсинцСцрипт ().
Корак 2) Затим, помоћу екецутеАсинцСцрипт () сачекајте 5 секунди.
Корак 3) Затим одредите тренутно време.
Корак 4) Одузми (тренутно време - време почетка) = прошло време.
Корак 5) Потврдите да би излаз требао приказивати више од 5000 милисекунди
импорт јава.утил.цонцуррент.ТимеУнит;импорт орг.опенка.селениум.ЈавасцриптЕкецутор;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.фирефок.ФирефокДривер;импорт орг.тестнг.аннотатионс.Тест;јавна класа ЈаваСЕ_Тест {@Тестјавна празнина Пријава (){Управљачки програм за ВебДривер = нови ФирефокДривер ();// Креирање објекта интерфејса ЈавасцриптЕкецутор помоћу ливења типаЈавасцриптЕкецутор јс = (ЈавасцриптЕкецутор) управљачки програм;// Покретање странице.дривер.гет ("хттп://демо.гуру99.цом/В4/");// Увећај прозордривер.манаге (). виндов (). макимизе ();// Подесите Сцрипт Тимеоут на 20 секундидривер.манаге (). тимеоутс (). сетСцриптТимеоут (20, ТимеУнит.СЕЦОНДС);// Изјавите и подесите време почеткалонг старт_тиме = Систем.цуррентТимеМиллис ();// Позовите методу екецутеАсинцСцрипт () да сачекате 5 секундијс.екецутеАсинцСцрипт ("виндов.сетТимеоут (аргументи [аргумент.ленгтх - 1], 5000);");// Добијмо разлику (цуррентТиме - стартТиме) пута.Систем.оут.принтлн ("Прошло време: + (Систем.цуррентТимеМиллис () - старт_тиме));}}
Излаз: Успешно приказано протекло време дуже од 5 секунди (5000 милисекунди) као што је приказано доле:
[ТестНГ] Покретање:Ц: \ Усерс \ гауравн \ АппДата \ Лоцал \ Темп \ тестнг-ецлипсе-387352559 \ тестнг-цустомсуите.кмллог4ј: УПОЗОРЕЊЕ Нису пронађени додаци за евиденцију (орг.апацхе.хттп.цлиент.протоцол.РекуестАддЦоокиес).лог4ј: УПОЗОРЕЊЕ Молимо вас да правилно иницијализујете систем лог4ј.лог4ј: УПОЗОРЕЊЕ Погледајте хттп://логгинг.апацхе.орг/лог4ј/1.2/фак.хтмл#ноцонфиг за више информација.Продато време: 5022ПРОШЛО: Пријава=================================================Подразумевани тестИзвршени тестови: 1, неуспеси: 0, прескоци: 0=================================================
Пример екецутеСцрипт-а
За екецутеСцрипт, видећемо три различита примера један по један.
1) Пример: Кликните на дугме за пријаву и генерисање прозора упозорења помоћу ЈаваСцриптЕкецутор-а.
У овом сценарију користићемо демо локацију „Гуру99“ за илустрацију ЈаваСцриптЕкецутор-а. У овом примеру,
- Покрените веб прегледач
- отворите веб локацију „хттп://демо.гуру99.цом/В4/“ и
- пријава са акредитивима
- Прикажите прозор упозорења о успешној пријави.
импорт орг.опенка.селениум.Би;импорт орг.опенка.селениум.ЈавасцриптЕкецутор;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.ВебЕлемент;импорт орг.опенка.селениум.фирефок.ФирефокДривер;импорт орг.тестнг.аннотатионс.Тест;јавна класа ЈаваСЕ_Тест {@Тестјавна празнина Пријава (){Управљачки програм за ВебДривер = нови ФирефокДривер ();// Креирање објекта интерфејса ЈавасцриптЕкецутор помоћу ливења типаЈавасцриптЕкецутор јс = (ЈавасцриптЕкецутор) управљачки програм;// Покретање странице.дривер.гет ("хттп://демо.гуру99.цом/В4/");Дугме ВебЕлемент = дривер.финдЕлемент (Би.наме ("бтнЛогин"));// Пријави се на Гуру99дривер.финдЕлемент (Би.наме ("уид")). сендКеис ("мнгр34926");дривер.финдЕлемент (Би.наме ("лозинка")). сендКеис ("амУпену");// Извршите клик на дугме ПРИЈАВА помоћу ЈавасцриптЕкецутор-ајс.екецутеСцрипт ("аргументи [0] .цлицк ();", дугме);// За генерисање прозора упозорења помоћу ЈавасцриптЕкецутор-а. Прикажите поруку упозорењајс.екецутеСцрипт ("алерт ('Добро дошли у Гуру99');");}}
Излаз: Када се код успешно изврши. Посматраћете
- Успешно кликните на дугме за пријаву и
- Приказаће се прозор упозорења (види слику испод).
2) Пример: Хватање података за стругање и кретање до различитих страница помоћу ЈаваСцриптЕкецутор-а.
Извршите доњу скрипту селена. У овом примеру,
- Покрените веб локацију
- Преузмите детаље о веб локацији, као што су УРЛ адресе, назив наслова и име домена.
- Затим идите на другу страницу.
импорт орг.опенка.селениум.ЈавасцриптЕкецутор;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.фирефок.ФирефокДривер;импорт орг.тестнг.аннотатионс.Тест;јавна класа ЈаваСЕ_Тест {@Тестјавна празнина Пријава (){Управљачки програм за ВебДривер = нови ФирефокДривер ();// Креирање објекта интерфејса ЈавасцриптЕкецутор помоћу ливења типаЈавасцриптЕкецутор јс = (ЈавасцриптЕкецутор) управљачки програм;// Покретање странице.дривер.гет ("хттп://демо.гуру99.цом/В4/");// Преузимање назива домена странице. Тостринг () промените објекат у име.Низ ДомаинНаме = јс.екецутеСцрипт ("ретурн доцумент.домаин;"). ТоСтринг ();Систем.оут.принтлн ("Име домена странице =" + Име домена);// Преузимање УРЛ-а странице. Тостринг () промените објекат у имеНиз урл = јс.екецутеСцрипт ("ретурн доцумент.УРЛ;"). ТоСтринг ();Систем.оут.принтлн ("УРЛ странице =" + урл);// Метод доцумент.титле дохваћа назив наслова веб локације. Тостринг () промените објекат у имеСтринг ТитлеНаме = јс.екецутеСцрипт ("ретурн доцумент.титле;"). ТоСтринг ();Систем.оут.принтлн ("Наслов странице =" + ИмеНаме);// Идите на нову страницу, тј. Да бисте генерисали приступну страницу. (покрени нови урл)јс.екецутеСцрипт ("виндов.лоцатион = 'хттп://демо.гуру99.цом/'");}}
Резултат: Када се горњи код успешно изврши, дохватаће детаље о локацији и прећи на другу страницу као што је приказано доле.
[ТестНГ] Покретање:Ц: \ Усерс \ гауравн \ АппДата \ Лоцал \ Темп \ тестнг-ецлипсе-467151014 \ тестнг-цустомсуите.кмллог4ј: УПОЗОРЕЊЕ Нису пронађени додаци за евиденцију (орг.апацхе.хттп.цлиент.протоцол.РекуестАддЦоокиес).лог4ј: УПОЗОРЕЊЕ Молимо вас да правилно иницијализујете систем лог4ј.лог4ј: УПОЗОРЕЊЕ Погледајте хттп://логгинг.апацхе.орг/лог4ј/1.2/фак.хтмл#ноцонфиг за више информација.Име домена странице = демо.гуру99.цомУРЛ странице = хттп://демо.гуру99.цом/В4/Наслов странице = Почетна страница Гуру99 банкеПРОШЛО: Пријава=================================================Подразумевани тестИзвршени тестови: 1, неуспеси: 0, прескоци: 0=================================================
3) Пример: Померите се надоле користећи ЈаваСцриптЕкецутор.
Извршите доњу скрипту селена. У овом примеру,
- Покрените веб локацију
- Померите се према доле за 600 пиксела
импорт орг.опенка.селениум.ЈавасцриптЕкецутор;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.фирефок.ФирефокДривер;импорт орг.тестнг.аннотатионс.Тест;јавна класа ЈаваСЕ_Тест {@Тестјавна празнина Пријава (){Управљачки програм за ВебДривер = нови ФирефокДривер ();// Креирање објекта интерфејса ЈавасцриптЕкецутор помоћу ливења типаЈавасцриптЕкецутор јс = (ЈавасцриптЕкецутор) управљачки програм;// Покретање странице.дривер.гет ("хттп://монеибоатс.цом/");// Увећај прозордривер.манаге (). виндов (). макимизе ();// Вертикално померање надоле за 600 пикселајс.екецутеСцрипт ("виндов.сцроллБи (0,600)");}}
Излаз : Када се изврши горњи код, помериће се за 600 пиксела (погледајте слику доле).
Резиме:
ЈаваСцриптЕкецутор се користи када Селениум Вебдривер не успе да кликне на било који елемент због неког проблема.
- ЈаваСцриптЕкеецутер пружа две методе "екецутесцрипт" и "екецутеАсинцСцрипт" за руковање.
- Извршио ЈаваСцрипт користећи Селениум Вебдривер.
- Илустровано је како кликнути на елемент путем ЈаваСцриптЕкецутор-а, ако селен због неког проблема не успе да кликне на елемент.
- Генерирао је прозор 'Алерт' користећи ЈаваСцриптЕкецутор.
- Дошло је до друге странице помоћу ЈаваСцриптЕкецутор-а.
- Померио се кроз прозор помоћу ЈаваСцриптЕкецутор-а.
- Дохваћени УРЛ, наслов и име домена помоћу ЈаваСцриптЕкецутор-а.