page object model selenium without using page factory
Модел објекта странице (ПОМ) је образац дизајна за одржавање спремишта објеката за веб елементе. Овај водич објашњава како применити ПОМ у селену без фабрике страница:
Скриптирани пројекат аутоматизације мора бити дизајниран на такав начин да буде оптимизован и лакши за разумевање. То се постиже коришћењем ПОМ-а који следи одређене смернице за дизајн оквира.
Сазнаћемо више о:
- Шта је ПОМ?
- Предности употребе ПОМ-а у пројекту
- Како створити основни ПОМ без коришћења приступа фабрике страница?
=> Посетите овде за ексклузивну серију лекција за обуку о селену.
Шта ћете научити:
Модел објекта странице без фабрике страница
Модел објекта странице је образац дизајна који се користи за одржавање спремишта објеката за веб елементе. Овде се сви веб елементи и њихове одговарајуће методе одржавају у посебном разреду за сваку веб страницу. Стога ће се чак и једна промена атрибута ВебЕлемента одразити у свим тест случајевима где год се користи. На тај начин побољшава лакше одржавање складишта објеката.
Модел објеката страница је најбољи када се користи за апликације које имају више страница или стања.
Ево водича за видео:
И део
ИИ део
Предности ПОМ-а
Следи неколико предности ПОМ-а:
- Лакше је одржавати код. Све промене корисничког интерфејса одражават ће се гдје год да се користе у класи.
- Робустан и чини код читљивим (методе имају реалистичнија имена).
- Чини код вишекратном употребом и смањује дуплирање кода (Спремиште објеката је независно од тест случајева).
- Код постаје мање и оптимизован.
Кораци за стварање ПОМ-а без модела фабрике страница
# 1) Направите Јава класу за сваку страницу у апликацији.
#два) У свакој класи прогласите све веб елементе променљивим.
# 3) Применити одговарајуће методе које делују на променљиве.
Узорак дизајна може се структурирати помоћу 2 слоја / пакета:
- Слој странице странице апликације ће држати као појединачни Јава Цласс. Свака класа ће имати ВебЕлементс декларисане као променљиве и радње које се изводе као методе.
- Тест Лаиер ће држати тест случајеве пријаве и њен део за верификацију.
Узмимо пример једноставног сценарија:
- Отворите УРЛ апликације.
- Унесите адресу е-поште и лозинку.
- Кликните на дугме Пријава.
- Потврдите успешну поруку за пријаву на страници за претрагу.
Слој странице
Овде имамо 2 странице,
- Почетна страница : Страница се отвара када се унесе УРЛ адреса и ту уносимо податке за пријаву.
- СеарцхПаге : Страница која се приказује након успешне пријаве.
У слоју странице, свака страница у веб апликацији декларисана је као засебна Јава класа и тамо су поменути њени локатори и радње.
Кораци за стварање ПОМ-а на примерима у реалном времену
# 1) Направите Јава класу за сваку страницу:
У ово пример , приступићемо 2 веб странице, „Почетна“ и „Претрага“. Стога ћемо створити 2 Јава класе у слоју странице (или у пакету рецимо цом.аутоматион.пагес).
Package Name : com.automation.pages HomePage.java SearchPage.java
# 2) Направите ВебЕлементс као променљиве:
ливење цхар у инт ц ++
Били бисмо у интеракцији са:
- Е-пошта, лозинка, поље дугмета за пријаву на почетној страници.
- Успешна порука на страници СеарцхПаге.
Дакле, креираћемо ВебЕлементс као променљиве помоћу класе „Би“.
На пример: Ако е-пошта има кпатх као // див [садржи (@ид, ‘ЕмаилИд’)], онда је његова декларација променљиве
// Лоцатор за поље ЕмаилИд
Би ЕмаилАддресс = Би.кпатх (// див [садржи (@ид, ‘ЕмаилИд’)])
# 3) Креирајте методе за радње извршене на ВебЕлементс:
Следеће акције се изводе на ВебЕлементс:
- Унесите радњу у поље ЕмаилАддресс.
- Унесите радњу у поље Лозинка.
- Кликните акцију на дугмету Пријава.
На пример, Кориснички дефинисане методе креирају се за сваку радњу на ВебЕлементу као,
public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) }
Овде се Ид преноси као параметар у методи, јер ће корисник послати улаз из главног тест случаја.
Белешка :Конструктор мора бити креиран за сваку класу у слоју странице да би се инстанца управљачког програма преузела из главне класе у тестном слоју.
Ми овде не покрећемо покретачки програм, већ се његова инстанца добија од главне класе када се креира објекат класе Паге Лаиер.
За сваку страницу креирају се две Јава класе, као што је приказано доле:
ХомеПаге.јава
//package com.automation.pages; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; public class HomePage { WebDriver driver; // Locator for Email Address By EmailAddress = By.xpath('//div[contains(@id,'Emaild')]'); // Locator for Password field By Password= By.xpath('//div[contains(@id,'Password')]'); // Locator for SignIn Button By SignInButton= By.xpath('//div[contains(@id,'SignInButton')]'); // Method to type EmailId public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) } // Method to type Password public void typePassword(String PasswordValue){ driver.findElement(Password).sendKeys(PasswordValue) } // Method to click SignIn Button public void clickSignIn(){ driver.findElement(SignInButton).click() } // Constructor // Gets called when object of this page is created in MainClass.java public HomePage(WebDriver driver) { // 'this' keyword is used here to distinguish global and local variable 'driver' //gets driver as parameter from MainClass.java and assigns to the driver instance in this class this.driver=driver; }
СеарцхПаге.Јава
//package com.automation.pages; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; public class SearchPage{ WebDriver driver; // Locator for Success Message By SuccessMessage= By.xpath('//div[contains(@id,'Message')]'); // Method that return True or False depending on whether the message is displayed public Boolean MessageDisplayed(){ Boolean status = driver.findElement(SuccessMessage).isDisplayed(); return status; } // Constructor // This constructor is invoked when object of this page is created in MainClass.java public SearchPage(WebDriver driver) { // 'this' keyword is used here to distinguish global and local variable 'driver' //gets driver as parameter from MainClass.java and assigns to the driver instance in this class this.driver=driver;
Тест Лаиер
Тест случајеви су примењени у овој класи.
Креирамо засебни пакет рецимо цом.аутоматион.тест, а затим овде креирамо Јава класу (МаинЦласс.јава).
Кораци за креирање тест случајева:
- Иницијализујте управљачки програм и отворите апликацију.
- Направите објекат класе ПагеЛаиер (за сваку веб страницу) и проследите инстанцу управљачког програма као параметар.
- Користећи створени објекат, упутите позив методама у класи ПагеЛаиер (за сваку веб страницу) да бисте извршили радње / верификацију.
- Понављајте корак 3 док се не изврше све радње, а затим затворите управљачки програм.
//package com.automation.test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MainClass { public static void main(String[] args) { System.setProperty('webdriver.chrome.driver','./exefiles/chromedriver.exe'); WebDriver driver= new ChromeDriver(); driver.manage().window().maximize(); driver.get('URL mentioned here'); // Creating object of HomePage and driver instance is passed as parameter to constructor of Homepage.Java HomePage homePage= new HomePage(driver); // Type EmailAddress homePage.typeEmailId('abc@ymail.com'); // EmailId value is passed as paramter which in turn will be assigned to the method in HomePage.Java // Type Password Value homePage.typePassword('password123'); // Password value is passed as paramter which in turn will be assigned to the method in HomePage.Java // Click on SignIn Button homePage.clickSignIn(); // Creating an object of LoginPage and driver instance is passed as parameter to constructor of SearchPage.Java SearchPage searchPage= new SearchPage(driver); //Verify that Success Message is displayed Assert.assertTrue(searchPage.MessageDisplayed()); //Quit browser driver.quit(); } }
Закључак
Овај водич је објаснио предности Паге Објецт Модел-а и како створити основни образац ПОМ дизајна без употребе Паге Фацтори у програму Селениум.
У предстојећем упутству разговараћемо о још једном приступу ПОМ-а, односно коришћењу приступа Паге Фацтори.
=> Овде погледајте СВЕ туторијале о селену.
Препоручено читање
- Модел објекта странице (ПОМ) са фабриком страница | Водич за селен
- Спирални модел - шта је СДЛЦ спирални модел?
- Водич за краставац селениј: Интеграција Јава Селениум ВебДривер краставца
- Коришћење класе Селениум Селецт за руковање падајућим елементима на веб страници - Водич за селениј бр. 13
- Увод у Селениум ВебДривер - Водич за селен бр. 8
- Водич за ЦхромеДривер Селениум: Тестови Селениум Вебдривер-а на Цхроме-у
- 30+ најбољих водича за селен: научите селен на стварним примерима
- Прилика за хонорарно хонорарно ангажовање стручњака за селен