Шта је Ајак?
АЈАКС је кратица од Асинхрони ЈаваСцрипт и КСМЛ и омогућава веб страници да преузме мале количине података са сервера без поновног учитавања целе странице.
Ајак је техника која се користи за стварање брзих и динамичних веб страница. Ова техника је асинхрона и користи комбинацију Јавасцрипта и КСМЛ-а.
Ажурираће делове веб странице без поновног учитавања целе странице.
Неке од познатих апликација које користе АЈАКС технику су Гмаил, Гоогле Мапс, Фацебоок, Иоутубе итд.
У овом упутству ћете научити-
- Шта је Ајак?
- Како Ајак ради?
- Како се рукује Ајак позивом помоћу Селениум Вебдривер-а
- Изазови у руковању Ајак позивима у програму Селениум Вебдривер
Како Ајак ради?
На пример, када кликнете на дугме за слање, ЈаваСцрипт ће послати захтев серверу, протумачити резултат и ажурирати тренутни екран без поновног учитавања веб странице.
- Ајак позив је асинхрони захтев који покреће прегледач и који директно не резултира преласком странице. Значи, ако покренете Ајаков захтев, корисник и даље може радити на апликацији док захтев чека одговор.
- АЈАКС шаље ХТТП захтеве од клијента ка серверу и затим обрађује одговор сервера, без поновног учитавања целе странице. Дакле, када упутите АЈАКС позив, нисте прилично сигурни у то колико је времена потребно серверу да вам пошаље одговор .
Са становишта тестера, ако проверавате садржај или елемент који ће се приказати, морате сачекати док не добијете одговор. Током АЈАКС позива подаци се чувају у КСМЛ формату и преузимају са сервера.
Како се рукује Ајак позивом помоћу Селениум Вебдривер-а
Највећи изазов у руковању Ајак позив је знати време учитавања за веб страници. С обзиром да ће учитавање веб странице трајати само делић секунди, тестеру је тешко да тестира такву апликацију помоћу алата за аутоматизацију. За то, Селениум Вебдривер мора да користи метод чекања на овом Ајак позиву.
Извршењем ове наредбе чекања, селениј ће зауставити извршавање тренутног Тест случаја и сачекати очекивану или нову вредност. Када се појави нова вредност или поље, суспендоване тестове извршиће Селениум Вебдривер.
Следе методе чекања које Селениум Вебдривер може користити
- Тхреад.Слееп ()
- Тхреад.Слееп () није мудар избор јер суспендује тренутну нит на одређено време.
- У АЈАКС-у никада не можете бити сигурни у тачно време чекања. Дакле, тест ће пропасти ако се елемент не појави у року чекања. Штавише, то повећава опће трошкове јер позивање Тхреад.слееп (т) чини да се тренутна нит премјести из текућег реда у ред чекања.
- Након достизања времена 'т', тренутна нит ће се преместити из реда чекања у ред спремности, а затим треба одређено време да је ЦПУ одабере и покрене.
- Имплицитно чекање ()
- Ова метода говори вебдриверу да сачека ако елемент није доступан одмах, али ово чекање ће бити на месту све време док је прегледач отворен. Дакле, свако тражење елемената на страници може потрајати време за које је постављено имплицитно чекање.
- Експлицитно сачекајте ()
- Експлицитно чекање се користи за замрзавање извршавања теста док се не испуни одређени услов или не истекне максимално време.
- ВебдриверВаит
- Може се користити у било којим условима. То се може постићи ВебДриверВаит-ом у комбинацији са ЕкпецтедЦондитион
- Најбољи начин да се динамички чека елемент је провера стања сваке секунде и наставак на следећу наредбу у скрипти чим је услов задовољен.
Али проблем са свим овим чекањима је, морате споменути јединицу за временско ограничење. Шта ако елемент још увек није присутан током времена? Дакле, постоји још једно чекање под називом Флуент ваит.
- Течно чекај
- Ово је примена интерфејса са чекањем који има свој тимеоут и интервал испитивања. Свака инстанца ФлуентВаит одређује максимално време чекања на услов, као и учесталост провере стања.
Изазови у руковању Ајак позивима у програму Селениум Вебдривер
- Коришћење команде „паусе“ за руковање Ајак позивом није потпуно поуздано. Дуго време паузе чини тест неприхватљиво спорим и повећава време тестирања. Уместо тога, „ваитфорцондитион“ ће бити кориснији у тестирању Ајак апликација.
- Тешко је проценити ризик повезан са одређеним Ајак апликацијама
- Давање пуне слободе програмерима да модификују Ајак апликацију чини процес тестирања изазовним
- Стварање аутоматизованог захтева за тест може бити тешко за алате за тестирање, јер таква апликација АЈАКС често користи различите технике кодирања или сериализације за слање ПОСТ података.
Пример за АЈАКС РУКОВАЊЕ
импорт орг.опенка.селениум.Би;импорт орг.опенка.селениум.ВебДривер;импорт орг.опенка.селениум.ВебЕлемент;импорт орг.опенка.селениум.цхроме.ЦхромеДривер;импорт орг.опенка.селениум.суппорт.уи.ЕкпецтедЦондитионс;импорт орг.опенка.селениум.суппорт.уи.ВебДриверВаит;импорт орг.тестнг.Ассерт;импорт орг.тестнг.аннотатионс.БефореЦласс;импорт орг.тестнг.аннотатионс.Тест;јавна класа Ајакдемо {привате Стринг УРЛ = "хттп://демо.гуру99.цом/тест/ајак.хтмл";Управљачки програм за ВебДривер;ВебДриверВаит ваит;@Пре наставејавна воид поставка () {Систем.сетПроперти ("вебдривер.цхроме.дривер", ". \\ цхромедривер.еке");// креирамо цхроме инстанцудривер = нови ЦхромеДривер ();дривер.манаге (). виндов (). макимизе ();дривер.навигате (). то (УРЛ);}@Тестјавна воид тест_АјакЕкампле () {По контејнеру = Би.цссСелецтор (". Контејнер");ваит = нови ВебДриверВаит (управљачки програм, 5);ваит.унтил (ЕкпецтедЦондитионс.пресенцеОфЕлементЛоцатед (контејнер));// Набавите текст пре извођења ајак позиваВебЕлемент ноТектЕлемент = дривер.финдЕлемент (Би.цлассНаме ("радиобуттон"));Стринг тектБефоре = ноТектЕлемент.гетТект (). Трим ();// Кликните радио дугмедривер.финдЕлемент (Би.ид ("иес")). цлицк ();// Кликните на дугме за проверудривер.финдЕлемент (Би.ид („провера дугмета“)). цлицк ();/ * Преузми текст након ајак позива * /ВебЕлемент ТектЕлемент = дривер.финдЕлемент (Би.цлассНаме ("радиобуттон"));ваит.унтил (ЕкпецтедЦондитионс.висибилитиОф (ТектЕлемент));Стринг тектАфтер = ТектЕлемент.гетТект (). Трим ();/ * Проверите оба текста пре ајак позива и после ајак позива. * /Ассерт.ассертНотЕкуалс (тектБефоре, тектАфтер);Систем.оут.принтлн („Извршен Ајак позив“);Стринг очекујеТект = "Радио дугме је означено и његова вредност је Да";/ * Потврдите очекивани текст текстом ажурираним након ајак позива * /Ассерт.ассертЕкуалс (тектАфтер, очекујеТект);дривер.цлосе ();}}
Резиме:
- АЈАКС омогућава веб страници да преузме мале количине података са сервера без поновног учитавања целе странице.
- Да би се тестирала апликација Ајак, треба применити различите методе чекања
- ТхреадСлееп
- Имплицитно сачекајте
- Екплицит Ваит
- ВебдриверВаит
- Течно чекај
- Стварање аутоматизованог захтева за тест може бити тешко за алате за тестирање, јер таква апликација АЈАКС често користи различите технике кодирања или сериализације за слање ПОСТ података.