page object model selenium without using page factory
Модель об'єктів сторінок (POM) - це шаблон дизайну для ведення сховища об'єктів для веб-елементів. Цей посібник пояснює, як впровадити POM в селен без фабрики сторінок:
Сценарій проекту автоматизації повинен бути розроблений таким чином, щоб він був оптимізований і простіший для розуміння. Це досягається за допомогою POM, який дотримується певних вказівок для розробки структури.
Ми дізнаємось більше про:
- Що таке POM?
- Переваги використання POM у проекті
- Як створити базовий POM без використання підходу Page Factory?
=> Завітайте сюди, щоб ознайомитись із ексклюзивними навчальними посібниками із селену.
Що ви дізнаєтесь:
Модель об'єкта сторінки без фабрики сторінок
Модель об'єкта сторінки - це шаблон дизайну, який використовується для ведення сховища об'єктів для веб-елементів. Тут усі веб-елементи та відповідні їм методи ведуться в окремому класі для кожної веб-сторінки. Отже, навіть одна зміна атрибута WebElement відображатиметься у всіх тестових випадках, де б він не використовувався. Таким чином, це полегшує обслуговування Object Repository.
Модель об'єктів сторінок найкраща, коли вона використовується для програм, які мають кілька сторінок або станів.
Ось відео-підручники:
Частина І
Частина ІІ
Переваги POM
Нижче наведено кілька переваг POM:
- Простіше підтримувати код. Будь-які зміни користувальницького інтерфейсу відображатимуться там, де вони використовуються в класі.
- Надійний і робить код читабельним (методи мають більш реалістичні назви).
- Робить код багаторазовим і зменшує дублювання коду (сховище об’єктів не залежить від тестових випадків).
- Код стає меншим та оптимізованим.
Кроки для створення POM без фабричної моделі сторінки
# 1) Створіть клас Java для кожної сторінки програми.
# два) У кожному класі оголосіть усі веб-елементи змінними.
# 3) Впровадити відповідні методи, що діють на змінні.
Шаблон дизайну можна структурувати, використовуючи 2 шари / пакети:
- Шар сторінки буде містити сторінки програми як окремий клас Java. Кожен клас матиме WebElements, оголошені як змінні, і дії, які виконуються як методи.
- Тестовий шар буде проводити тестові приклади заявки та її частину перевірки.
Візьмемо приклад простого сценарію:
- Відкрийте URL-адресу програми.
- Введіть адресу електронної пошти та дані пароля.
- Клацніть на кнопку Вхід.
- Перевірте успішне повідомлення для входу на сторінці пошуку.
Шар сторінки
Тут ми маємо 2 сторінки,
- Домашня сторінка : Сторінка відкривається при введенні URL-адреси, і саме сюди ми вводимо дані для входу.
- SearchPage : Сторінка, яка відображається після успішного входу.
На рівні сторінки кожна сторінка у веб-програмі оголошується як окремий клас Java, і там згадуються її локатори та дії.
Кроки для створення POM на прикладах у реальному часі
# 1) Створіть клас Java для кожної сторінки:
У цьому приклад , ми отримаємо доступ до 2 веб-сторінок, “Домашня сторінка” та “Пошук”. Отже, ми створимо 2 класи Java на рівні сторінки (або в пакунку, наприклад, com.automation.pages).
Package Name : com.automation.pages HomePage.java SearchPage.java
# 2) Створіть WebElements як змінні:
який ваш підхід при тестуванні мобільних додатків
Ми взаємодіяли б із:
- Електронна пошта, пароль, поле кнопки входу на домашній сторінці.
- Успішне повідомлення на SearchPage.
Отже, ми створимо WebElements як змінні, використовуючи клас «За».
Наприклад: Якщо електронна пошта має xpath як // div (містить (@id, ‘EmailId’)), тоді його змінна декларація
// Локатор для поля EmailId
За адресою електронної пошти = By.xpath (// div (містить (@id, ‘EmailId’)))
# 3) Створіть методи для дій, що виконуються на WebElements:
Нижче виконуються дії на WebElements:
- Введіть дію в полі EmailAddress.
- Введіть дію в полі Пароль.
- Натисніть дію на кнопці Вхід.
Наприклад, Користувацькі методи створюються для кожної дії в WebElement як,
public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) }
Тут Id передається як параметр у методі, оскільки вхідні дані будуть надіслані користувачем з основного тесту.
Примітка :Потрібно створити конструктор для кожного класу на рівні сторінки, щоб отримати екземпляр драйвера з основного класу в тестовому рівні.
Ми не ініціюємо драйвер тут, швидше його екземпляр отримується від основного класу, коли створюється об'єкт класу Page Layer.
Для кожної сторінки створюються два класи Java, як показано нижче:
HomePage.java
//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; }
SearchPage.Java
//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;
Тестовий шар
У цьому класі реалізовані тестові кейси.
Ми створюємо окремий пакет, скажімо, com.automation.test, а потім створюємо тут клас Java (MainClass.java).
Кроки для створення тестових випадків:
- Ініціалізуйте драйвер і відкрийте програму.
- Створіть об'єкт класу PageLayer (для кожної веб-сторінки) і передайте екземпляр драйвера як параметр.
- Використовуючи створений об’єкт, зателефонуйте методам у класі PageLayer (для кожної веб-сторінки) для виконання дій / перевірки.
- Повторюйте крок 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(); } }
Висновок
У цьому посібнику розказано про переваги об'єктної моделі сторінок та про те, як створити базовий шаблон дизайну POM без використання Page Factory у Selenium.
У наступному підручнику ми обговоримо ще один підхід POM, тобто використання підходу Page Factory.
=> Перевірте ВСІ підручники з селену тут.
Рекомендована література
- Об'єктна модель сторінки (POM) із заводу сторінок | Підручник із селену
- Спіральна модель - що таке спіральна модель SDLC?
- Підручник з огірка селену: інтеграція огірка Java Selenium WebDriver
- Використання класу Selenium Select для обробки випадаючих елементів на веб-сторінці - Підручник селену №13
- Вступ до Selenium WebDriver - Підручник з селену №8
- Підручник із селену ChromeDriver: Тести веб-драйверів на селен у Chrome
- 30+ найкращих підручників із селену: вивчіть селен на реальних прикладах
- Можливість роботи на фріланс для експертів із селену