protractor testing tool
Шта је угломер?
Кутомер је алат за аутоматизацију за тестирање веб апликација; комбинујући моћне технологије као што су Јасмине, Селениум Вебдривер, Ноде.јс итд.
Алат за тестирање кутомјера је оквир за тестирање заснован на понашању, дизајниран имајући на уму Ангулар ЈС апликације. Иако то можда звучи као да Протрацтор неће радити са ЈС апликацијама које нису угаоне, то чини.
Једнако добро функционише и са Ангулар и са нон-Ангулар ЈС апликацијама.
Слободно истражите целу серију водича за АнгуларЈС . У нашем претходном упутству, разлика између угаоних верзија је детаљно објашњено.
Шта ћете научити:
- Кутомер вс Селениум ВебДривер
- Карактеристике
- Како ми кутомер може помоћи?
- Који оквир користити?
- Како преузети и поставити кутомер
- Спремни сте да направите свој први тест случај?
- Како водити тестове?
- Још неке кул карактеристике кутомјера
- Закључак
- Препоручено читање
Кутомер вс Селениум ВебДривер
По чему се кутомер разликује од традиционалног Селениум ВебДривер ?
Одвојите минут да одговорите на ова питања:
- Да ли је тешко одредити када је тачно веб страница коначно учитана (Сви асинхрони елементи су спремни и обрађени)?
- Да ли сте се уморили од додавања чекања и спавања коду?
- Да ли желите да се решите гломазног напора да лоцирате угаоне елементе?
- Фрустриран лоцирањем елемената са променљивим ИД-овима?
- Да ли желите да креирате свој локатор?
- Пишете ли подужи код чак и за најједноставније тврдње?
- Да ли сте љубитељ / љубитељ ЈаваСцрипт-а?
Ако сте на ова питања одговорили да, Кутомер може да помогне.
То је омот изграђен на врху Селениум Вебдривер-а и тако пружа све могућности Селениум-а, заједно са многим корисним додацима. Нуди:
Карактеристике
Нуди:
1) ВаитФорАнгулар
шта користити за отварање јар датотека
Из документације:
' Наредите ВебДриверу да сачека док Ангулар не заврши приказивање и нема преосталих $ хттп или $ тимеоут позива пре наставка. Имајте на уму да Протрацтор аутоматски примењује ову наредбу пре сваке акције ВебДривер. '
То значи да нема потребе за ручним додавањем чекања у скрипту и Протрацтор ће аутоматски сачекати да се веб елементи учитају и тек онда извршава следеће кораке.
два) Има могућност извоза глобалне функције елемент , који узима локатор и враћа ЕлементФиндер. Овај ЕлементФиндер има скуп метода деловања, као што су цлицк (), гетТект (), сендКеис () итд. Ово је срж начина интеракције са елементом и добијања информација из њега.
Ова глобална функција помаже у смањењу синтаксе лоцирања елемената. Погледајте следећу изјаву да бисте пронашли елемент и у Селениум ВебДривер-у и у кутомјеру:
Селениум Вебдривер :
driver.findElement(By.cssSelector('css selector'));
Кутомер :
element(by.css('some-css'));
Синтакса изгледа компактно, зар не?
3) Неке нове стратегије и функције локатора које пружају помоћ у лоцирању угловних елемената су: Би.биндинг, Би.репеатер, Би.тектареа, Би.модел, ВебЕлемент.алл, ВебЕлемент.евалуате итд.
Како ми кутомер може помоћи?
Погледајте следеће истакнуте карактеристике:
- Једноставна синтакса за писање тест случајева
- Могућност покретања више прегледача одједном помоћу Селениум Грид
- Локатори специфични за угао
- Подршка развоју вођеном понашањем попут Јасмине / Моцха
- Нема потребе за додавањем спавања / чекања
- Подржана интеграција са Јенкинс / Бровсер Стацк / Грунт итд.
- Решите се проблема са синхронизацијом на веб локацијама Ангулар ЈС
- Подршка за више прегледача (Фирефок, Цхроме, Сафари, Интернет Екплорер)
- Могућност покретања истих скрипти у мобилним претраживачима, такође без потребе за променом кода
Који оквир користити?
Подржава два оквира за тестирање развоја заснованог на понашању (БДД) одмах:
- Јасмин: Јасмине је подразумевани оквир за тестирање када се инсталира Протрацтор. У овом чланку ћемо користити јасмин.
- Моцха: Моцха је ЈаваСцрипт тест оквир који ради на Ноде.јс. Ако желите да користите Моцха као тестни оквир, мораћете да га подесите са својим кутомјером, а такође ће бити потребно да користите интерфејс за развој понашања и Цхаи тврдње са Цхаи-ом као што је обећано (погледајте овај линк За више детаља ).
Како преузети и поставити кутомер
Како је то ноде.јс програм, морате да инсталирате ноде.јс да би се покренуо. Ноде.јс се може преузети са ове УРЛ адресе одабиром оперативног система: Ноде.јс преузимање
Са ноде.јс такође добијате Кутомер изнад нивоа мора пакет, који се сада може користити за инсталирање кутомјера.
Сада када је ноде.јс инсталиран на вашем рачунару, отворите командну линију (цмд) и притисните доњу команду да бисте је глобално инсталирали:
npm install -g protractor
‘-Г’ се користи за глобалну инсталацију овог алата. Уклоните га ако не желите да га инсталирате глобално. Ова команда такође инсталира Протрацтор АПИ заједно са подразумеваним сервером селена, што значи да не морате нужно покретати самостални сервер.
Сада морамо да инсталирамо селенски сервер и ЦхромеДривер. Користите следећу наредбу (такође се испоручује са угломером) у цмд:
webdriver-manager update
То је све што треба да започнемо са нашим првим писањем тест примера користећи овај оквир. Ако желите, можете инсталирати било који ИДЕ / едитор за писање вашег кода. Ецлипсе ИДЕ је популаран, али постоје и неки цоол уредници које треба размотрити. Лично, више волим „Атом“ едитор за писање кода Протрацтор.
Спремни сте да направите свој први тест случај?
Потребне су јој 2 датотеке:
- Конфигурациона датотека
- Спец датотека.
Тхе Конфигурациона датотека је онај који Протрактору каже где да пронађе датотеке за тестирање (спецификације) / који прегледач да одабере / који оквир да користи (Јасмине / Моцха) / где да разговара са претраживачем Селениум и другим конфигурацијама. Ако било која конфигурација није дефинисана у конфигурационим датотекама, користиће подразумеване вредности.
Спец датотека је она у коју пишемо наш стварни тест код. Сви наши тестови функционалног тока / тврдње биће у овој специфичној датотеци. На основу броја тест случајева може бити неколико датотека са спецификацијама, али само 1 датотека са спецификацијама ће моћи да покрене читав пакет тестова са неколико спецификација.
Пример ТЕСТИРАНОГ СЛУЧАЈА:
Сада ћемо написати једноставан тест где ћемо доћи до УРЛ-а и проверити наслов странице.
Ево корака:
- Направите нову фасциклу за тестни пакет.
- Направите нову датотеку са именом „ јс ’. (Било које име ће бити довољно) Све датотеке спецификација / конфигурације биће екстензије‘ .јс ’.
- Направите нову датотеку са именом наведеним као „ јс '.
//CheckTitleSpec.js describe('Protractor Demo', function() { it('to check the page title', function() { browser.ignoreSynchronization = true; browser.get('https://www.softwaretestinghelp.com/'); browser.driver.getTitle().then(function(pageTitle) { expect(pageTitle).toEqual('Software Testing Help - A Must Visit Software Testing Portal'); }); }); });
Сада смо сви спремни да започнемо са нашим кодирањем. Погледајте доњи код датотеке „тестЦасеНамеСпец.јс“.
Ево како изгледа конфигурациона датотека:
// conf.js exports.config = { framework: 'jasmine', capabilities: { browserName: 'chrome', }, specs: ['simpleTestSpec.js'] };
Хајде сада да разбијемо ове две датотеке и да видимо како то функционише.
# 1) Спец.јс
- Све команде на нивоу прегледача обрађиваће „ прегледач ’, Глобалац који је креирао Протрацтор.
- Како следимо јасминов оквир, „ описати ' и ' то ’Су синтаксе јасмина. Опис ће садржати целокупан ток вашег тест случаја, док „то“ може садржати неке кораке / сценарије теста итд. Можете их имати више „ то У вашем програму ако желите.
- бровсер.гет је једноставна синтакса Селениум која каже Протрактору да погоди одређени УРЛ у прегледачу.
- Како је веб локација коју покушавамо да погодимо не-угаона, поставили смо игнореСинцхронизатион означи за „ истинито ’Како је приказано у реду бр. 4. Ако ову ознаку не учините тачном, тест неће успети са грешком„ Угао није могуће пронаћи на страници “. Разлог томе је што Протрацтор подразумевано ради са угаоним веб локацијама, а ако користимо Протрацтор за валидацију неугаоне веб локације, то морамо изричито рећи Протрацтору. Међутим, ако радите на угаоним веб локацијама, нема потребе да користите ову изјаву јер ће Протрацтор подразумевано сматрати да је веб страница угласта.
- „Очекивати“ није ништа друго до тврдња у којој упоређујемо наслов веб странице са једнаким неким унапред дефинисаним подацима. Детаљно ћемо размотрити још тврдњи.
#два) цонф.јс
- Као што је раније речено, конфигурациона датотека је она која Кутомеру говори о основним детаљима. Као што је приказано у коду, оквир је „јасмин“.
- Унутар одељка за могућности постављене су конфигурације прегледача. Можете да дефинишете име прегледача као што је Фирефок / цхроме итд. Такође можете да подесите максималан број прегледача тако да истовремено можете да покренете више тест случајева на различитим доступним прозорима прегледача.
- У „ спецификације ’, Дајемо путању датотеке са спецификацијама, односно тачно где се налази датотека са спецификацијама у односу на датотеку за конфигурацију.
- Постоје и многе друге занимљиве функције које можете приложити у своју конфигурациону датотеку, као што су Репортинг / онПрепаре функција / временско ограничење итд. У овом упутству ћемо покрити неколико њих.
Како водити тестове?
Написали смо код и сада нам треба само мало притиска да покренемо наш код. Притисните следећу команду у цмд да бисте покренули свој програм:
protractor conf.js
Ова наредба ће започети извођење селенског сервера, након чега ће се покренути тест скрипта. Евиденције можете прегледати у самом цмд-у, или ако желите, евиденције се могу ухватити и у .ткт датотеку (само додај >> тектФилеНаме.ткт након горње наредбе и евиденције ће бити сачуване у текстуалној датотеци која се налази у истом директоријуму као и конфигурациона датотека).
Отвориће се хромирани прозор, где СофтвареТестингХелп.цом веб страницу треба отворити. Излаз би био „1 спецификација, 0 неуспех“ када покренете код. То значи да смо имали 1 ‘ит’ блокова, који су извршени са 0 неуспеха.
Сада узмите у обзир доњу спецификациону датотеку у којој изводимо неке радње на веб страници која се гради на АнгуларЈС-у, тако да можете видети како кутомер узима Селениум када је у питању тестирање веб странице Ангулар:
питања и одговори за интервју за орацле скл пдф
// spec.js describe('Code to interact with Angular JS elements', function() { it('should multiply two integers', function() { browser.get('http://juliemr.github.io/protractor-demo/'); element(by.model('first')).sendKeys(5); element(by.model('second')).sendKeys(5); element(by.model('operator')).click(); element(by.xpath('.//option[@value= 'MULTIPLICATION']')).click(); element(by.id('gobutton')).click(); expect(element(by.binding('latest')) .getText()).toEqual('10'); //Incorrect expectation expect(element(by.binding('latest')) .getText()).toEqual('25'); //Correct expectation }); });
Исти цонф.јс можете користити и за покретање ове спецификације. Само обавезно ажурирајте назив датотеке са спецификацијама.
Сада, у овој датотеци са спецификацијама, играмо се са угаоном ЈС веб локацијом, тако да можете да видите шта је тачно Протрацтор способан.
Ако покренете ову датотеку као и раније, отвориће се веб страница са 2 оквира за текст, падајућим менијем, дугметом и неколико других веб елемената. Као што сте већ могли претпоставити, то је страница калкулатора. Дајемо 2 целе бројеве као улаз и изводимо операцију множења.
Као што смо већ разговарали, једна од највећих предности коришћења овог алата су његове јединствене технике лоцирања кутних елемената. „Би.модел“ је један од таквих начина лоцирања елемената. ‘.СендКеис ()’ уобичајена је синтакса селена за слање вредности у оквире за текст и ‘.Цлицк ()’ користи се за кликање на дугмад.
Као што је раније речено, ‘Очекујем’ је тврдња која тражи од угломера да ухвати резултат множења бројева и упореди га са „10“ и „25“ узастопно. Једноставна математика нам говори да би излаз требало да буде „25“ и стога прва тврдња не успева, а друга пролази.
Као резултат, добићете „ 1 спецификација, 1 неуспех ’У евиденцијама када покренете код, што се очекује.
Још неке кул карактеристике кутомјера
# 1) Тврдње и напомене
Тврдње су важан део скрипти за аутоматизацију. Биљешке су такође врло корисне за ефикасно означавање одређених метода у класи које имају посебно значење.
Пружа низ тврдњи и напомена, а поред тога, такође нуди могућност креирања сопствених тврдњи.
Размотрите доњи пример:
describe('Code to understand assertions/annotations', function() { beforeEach(function() { browser.get('http://juliemr.github.io/protractor-demo/'); }); afterEach(function() { browser.get('https://www.madewithangular.com/#/'); }); var multiplyNumbers = function(a, b) { element(by.model('first')).sendKeys(a); element(by.model('second')).sendKeys(b); element(by.model('operator')).click(); element(by.id('gobutton')).click(); }; it('should multiply two integers', function() { multiplyNumbers(2, 2); expect(element.all(by.repeater('result in memory')).count()).toEqual(2); multiplyNumbers(3, 3); expect(element.all(by.repeater('result in memory')).count()).toEqual(2); }); });
У горњем примеру користимо 2 напомене, ‘БефореЕацх’ и ‘АфтерЕацх’ . Ове напомене су доступне и у програму ТестНГ (традиционални селен). Ове напомене осигуравају да ће се одређени део кода извршити пре / после извршавања преосталог кода.
Дакле, ево како ће се извршити извршење кода,
- Кутомер ће доћи до „ бефореЕацх Прво блокира и погодиће „ хттп://јулиемр.гитхуб.ио/протрацтор-демо/ ’УРЛ у прегледачу.
- Сада ће се ток преселити у блок „ит“ и функционисати „ мултиплиНумберс ’ позваће се, што ће заузврат извршити одређене радње у њему, шаљући контролу назад тамо где је функција позвана.
- Напокон, тврдња ће обавити свој посао. Сада, ако желимо да се истовремено бавимо са више елемената, можете да користите функцију „елемент.алл“ ове алатке. Идентификоваће све доступне елементе са наведеним локатором (у овом случају би.репеатер). На вама је шта желите да урадите са идентификованим елементима. У овом случају упоређујемо историју израчунавања са датим бројем.
- Будући да у првој тврдњи упоређујемо број историје израчунавања са „2“, иако смо израчунавање извршили само једном, тврдња неће успети. Међутим, друга тврдња ће проћи јер би након другог израчунавања број историје био „2“.
Постоји много више доступних врста тврдњи. Неки од њих су дати у наставку:
а) Преузмите текст из веб елемента и упоредите га са одређеном вредношћу:
element(by.locator('someLocator')).getText(text) .then(function() { expect(text).toEqual('someData'); expect(text).not.toEqual('someData'); expect(text).toContain('someOtherData'); });
б) Проверите да ли је веб елемент приказан на страници или не:
expect(browser.driver.findElement(by.locator(someLocator)) .isDisplayed()).toBe(true);
# 2) Руковање више прегледача / прозора / картица
Када је реч о руковању прегледачем, може бити више случајева. Неки од ових случајева су истакнути у наставку:
а) Отвара се нова картица кликом на било коју везу
Понекад, када кликнете на било коју везу, отвориће се нова картица и остале радње треба да се изврше у новоотвореном прозору. У овом случају, када пишете код до тачке у којој се отвара нова картица, потребно је да примените Виндов Хандлер на следећи начин:
//Get all of the opened windows and store the count in handles browser.getAllWindowHandles().then(function(handles) { //Now switch the control to the newly opened window browser.switchTo().window(handles[1]).then(function() { //Write the code which needs to be executed in the new tab }); });
Прво пребројите све доступне прозоре, а затим помоћу индексирања пребаците контролу између прозора. Оригинални прозор који је покренуо нови прозор имаће индекс 0, док ће наредни прозори имати растуће индексе.
б) Отварање потпуно новог прегледача са новом сесијом
Када требате извршити неке радње у прегледачу и требате извршити даље радње у другој сесији прегледача, морамо да користимо форкНевДриверИнстанце . У овом случају креирамо нову инстанцу прегледача са новим именом прегледача на следећи начин:
describe('Code to understand assertions/annotations', function() { //Create a new browser instance var newBrowser = browser.forkNewDriverInstance(); it('should should open multiple browsers instances', function() { //Opens a URL in the 1st browser instance browser.get('http://juliemr.github.io/protractor-demo/'); //Opens a URL in the 2nd browser instance newBrowser.get('https://www.madewithangular.com/#/'); newBrowser.driver.quit(); }); });
ц) Покретање теста у више прегледача:
Покретање вашег тест случаја у два прегледача одједном је нешто што конфигурациона датотека може учинити за вас. Само додајте доњи код у вашу конфигурациону датотеку:
Чим покренете ову конфигурациону датотеку, видећете тестове који се истовремено извршавају и у Фирефоку и у Цхроме-у, а евиденције покретања биће приказане у командној линији одвојено.
// conf.js exports.config = { framework: 'jasmine', specs: ['SomeSpec.js'], multiCapabilities: [{ browserName: 'firefox' }, { browserName: 'chrome' }] }
# 3) Користите Паге Објекте да бисте свој оквир учинили још бољим
Овај алат је добар сам за себе, али постаје непобедив у комбинацији са објектним моделом странице (ПОМ). Већина његових недостатака (ако их има) превазилази се објектним моделом странице. Штавише, ПОМ такође помаже у одржавању вашег пројекта на структуриранији начин.
Ако не знате шта је ПОМ, не брините. ПОМ је начин за раздвајање вашег тест случаја на основу страница.
Узмимо овај пример:
Постоји веб локација за куповину. Ваш тест је одабир производа, додавање у корпу и куповина.
Сада постоје два начина за управљање тест кодом скрипте за ово:
- Напиши обичан тест са свим локаторима на истој страници на којој је твоја логика написана,
- Запишите читав свој ток тест случаја, своју логику у датотеку са спецификацијама и раздвојите своје локаторе и податке о тестирању у различите датотеке. Свака веб страница имаће еквивалентну датотеку .јс странице. На тај начин, ваш код ће бити структуриран и ако постоји било који други тест случај који захтева исти локатор, не морате поново да их пишете, само увезите ову датотеку локатора и користите је према својој потреби.
Одржавање тест случајева може бити права мука. Ако користите ПОМ, ваш код ће бити много структуриранији.
са чиме отварате јар датотеке
Ево примера коришћења објектног модела странице:
Ово је ток у горњој снимци:
- Постоји тест случај који купује лаптоп. Код протока и логике биће у пурцхасеЛаптопСпец.јс.
- Све странице које се нађу приликом куповине преносног рачунара имаће 1 .јс датотеку са одговарајућим насловом. Сви елементи потребни за куповину преносног рачунара, њихови локатори ће бити унутар одговарајуће датотеке странице.
- Подаци потребни за овај тест могу се сачувати у директоријуму ТестДата у „.јсон“ формату или у екцел формату.
- Када завршите са страницама и локаторима, само увезите ове датотеке у своју датотеку спецификација да бисте користили податке локатора / теста и сви сте спремни за тест случај.
# 4) Извештавање
НПМ (Ноде Пацкаге Манагер) пружа разне пакете извештавања, помоћу којих се може снимити снимак екрана сваког тест корака, а такође ће, након завршетка пробе, генерирати ХТМЛ извештај за вас. Све што треба да урадите је да инсталирате те пакете тако што ћете отворити командну линију и притиснути наредбе у наставку:
npm install -g protractor-jasmine2-html-reporter
npm install protractor-jasmine2-screenshot-reporter --save-dev
Једном када се ови пакети инсталирају, сваки пут када покренете своју конфигурациону датотеку, сачуваће се све снимке екрана ваших тест случајева, а такође ће се генерисати ХТМЛ извештај који приказује резултат проласка / неуспеха тест случаја.
# 5) Интегришите са другим моћним алатима као што су Гит / Јенкинс / Бровсерстацк / Грунт
На тржишту је доступно више алата који ће вам побољшати тестове. Гит / Јенкинс / БровсерСтацк / Грунт су неки од таквих алата који додају значајну вредност вашим уобичајеним скриптама за протрактор. И најбољи део је што не морате да додирујете своју спецификациону датотеку да бисте интегрисали свој кутомер са било којим од ових алата. То је ваша конфигурациона датотека која ће све ове ствари узети за вас.
Иди је врло моћан алат за контролу верзија. Увек је најбоља пракса задржати свој код у Гит-у ако је укључено више програмера.
Јенкинс је алат за континуирану интеграцију помоћу којег можете заказати тестове и покренути их према вашој потреби. Скрипте угломера такође могу да се конфигуришу са Јенкинс-ом. Најбоља употреба тестирања на Јенкинс-у је та што је врло брзо, а истовремено можете покренути више тест случајева.
БровсерСтацк је алатка за тестирање више прегледача која се такође може користити за тестирање ваших апликација у различитим прегледачима. Такође се може интегрисати са Протрацтор додавањем акредитива бровсерСтацк у вашу конфигурациону датотеку.
Приземље је покретач ЈаваСцрипт задатака. Пружа вам могућност да за вас извршите неколико задатака. Његова страшност је у томе што постоји више од 4000 задатака и можете креирати још више задатака према вашим захтевима. Следи неколико важних задатака за свакодневну употребу за које можемо користити Грунт:
- Наведите све најбоље праксе кодирања и одмах их обавестите кад год прекршите било коју од њих.
- Да бисте током извођења креирали више датотека са спецификацијама. На пример , ако постоји било који тест случај који желите да покренете неколико пута (у распону од 1 до било ког броја). У овом тренутку ово може изгледати непотребно, али размислите о покретању било ког поступка плаћања на веб локацији за куповину који ће се покретати у свакој појединој доступној земљи. Било би заморно ручно креирати више спецификација. Па, пустите Грунта да то уради уместо вас.
- Карактеристика сата. Напишете тест случај и сваки пут чим сачувате свој код након било какве промене у њему, желите да се тест случај покрене, Грунт га је добио.
- Спајање више датотека.
Само пробајте и свидеће вам се.
Закључак
Можете натерати Селениум да ради попут угломера, али зашто поново измишљати точак? Ако се Гоогле уложио толико труда да кутомер ради као шарм, пустите га да га искористите у потпуности. Барем за веб странице АнгуларЈС то ће вам знатно олакшати живот.
Такође, овај чланак није само о кутомјеру. Постоји велики свет кутомјера и на тржишту је на располагању стотине пакета које НПМ нуди да додате више функција вашем тесту поред једноставних сценарија теста. Слободно користите ове пакете и учините их још бољим.
О аутору: Ово је гост од Десхансх-а. Ради као инжењер за развој софтвера у тестирању са једним од водећих МНЦ-а. Има велико искуство радећи на испитивањима аутоматизације селена и кутомјера.
Наш предстојећи водич ће вам помоћи да успешно обришете било који интервју са АнгуларЈС.
ПРЕВ Туториал |. | СЛЕДЕЋА Лекција
Препоручено читање
- Најбољи алати за тестирање софтвера 2021. [Алати за аутоматизацију КА теста]
- Преузимање е-књиге за тестирање буквара
- Испитивање аутоматизације помоћу алата краставаца и селена - Туториал бр. 30
- Инсталирање апликација и припрема за тестирање Аппиум-а
- Испитивање оптерећења помоћу ЛоадУИ - бесплатног алата за тестирање учитавања отвореног кода
- Интеграција селена са ЈМетером
- Испитивање оптерећења помоћу ХП ЛоадРуннер водича
- Водич за алат за тестирање приступачности ВАВЕ-а