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