page object model selenium without using page factory
Page Object Model (POM) je návrhový vzor pro udržování úložiště objektů pro webové prvky. Tento výukový program vysvětluje, jak implementovat POM v selenu bez Page Factory:
Skriptovaný projekt automatizace musí být navržen tak, aby byl optimalizovaný a srozumitelnější. Toho je dosaženo pomocí POM, který dodržuje určité pokyny pro návrh rámce.
Dozvíme se více o:
- Co je POM?
- Výhody použití POM v projektu
- Jak vytvořit základní POM bez použití přístupu Page Factory?
=> Navštivte zde exkluzivní sérii výukových kurzů selenu.
Co se naučíte:
Objektový model stránky bez továrny na stránky
Page Object Model je návrhový vzor, který se používá k údržbě úložiště objektů pro webové prvky. Zde jsou všechny webové prvky a jejich odpovídající metody udržovány v samostatné třídě pro každou webovou stránku. Proto se dokonce i jedna změna v atributu WebElement projeví ve všech testovacích případech, ať se použije kdekoli. Tímto způsobem vylepšuje snazší údržbu úložiště objektů.
Model Objekty stránky je nejlepší použít pro aplikace, které mají více stránek nebo stavů.
Zde jsou videonávody:
Část I.
Část II
Výhody POM
Níže uvádíme několik výhod POM:
- Je snazší udržovat kód. Jakékoli změny uživatelského rozhraní se projeví všude, kde se ve třídě použijí.
- Robustní a umožňuje čitelnost kódu (metody mají realističtější názvy).
- Umožňuje opětovné použití kódu a snižuje duplikaci kódu (úložiště objektů je nezávislé na testovacích případech).
- Kód se zmenší a optimalizuje.
Kroky k vytvoření POM bez modelu továrny na stránky
# 1) Vytvořte třídu Java pro každou stránku v aplikaci.
#dva) V každé třídě deklarujte všechny webové prvky jako proměnné.
# 3) Implementujte odpovídající metody působící na proměnné.
Návrhový vzor lze strukturovat pomocí 2 vrstev / balíčků:
- Vrstva stránky bude uchovávat stránky aplikace jako jednotlivé třídy Java. Každá třída bude mít WebElements deklarované jako proměnné a akce, které jsou prováděny jako metody.
- Testovací vrstva uchová testovací případy aplikace a její ověřovací části.
Uveďme si příklad jednoduchého scénáře:
- Otevřete adresu URL aplikace.
- Zadejte e-mailovou adresu a heslo.
- Klikněte na tlačítko Přihlášení.
- Ověřte úspěšnou přihlašovací zprávu na stránce vyhledávání.
Vrstva stránky
Tady máme 2 stránky,
- Domovská stránka : Stránka se otevře po zadání adresy URL a zde zadáme údaje pro přihlášení.
- Hledat na stránce : Stránka, která se zobrazí po úspěšném přihlášení.
Ve vrstvě Stránka je každá stránka ve webové aplikaci deklarována jako samostatná třída Java a jsou zde uvedeny její vyhledávače a akce.
Kroky k vytvoření POM s příklady v reálném čase
# 1) Vytvořte třídu Java pro každou stránku:
V tomhle příklad , přejdeme na 2 webové stránky, stránky „Domovská stránka“ a „Hledat“. Proto ve vrstvě stránky (nebo v balíčku řekněme com.automation.pages) vytvoříme 2 třídy Java.
Package Name : com.automation.pages HomePage.java SearchPage.java
# 2) Vytvořte WebElements jako proměnné:
nejlepší bezplatný software pro hodiny zaměstnanců
Byli bychom v interakci s:
- E-mail, heslo, pole pro přihlášení na domovské stránce.
- Úspěšná zpráva na stránce SearchPage.
Takže vytvoříme WebElements jako proměnné pomocí třídy „By“.
Například: Pokud má e-mail xpath jako // div [obsahuje (@id, 'EmailId')], pak je jeho proměnná deklarace
// Vyhledávač pro pole EmailId
By EmailAddress = By.xpath (// div [contains (@id, 'EmailId')]))
# 3) Vytvořte metody pro akce prováděné na WebElements:
Na WebElements se provádějí níže uvedené akce:
- Zadejte akci do pole EmailAddress.
- Do pole Heslo zadejte akci.
- Klikněte na akci na tlačítku Přihlásit.
Například, Uživatelem definované metody se vytvářejí pro každou akci na WebElement jako,
public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) }
Zde se Id předává jako parametr v metodě, protože vstup bude odeslán uživatelem z hlavního testovacího případu.
Poznámka :Pro každou třídu ve vrstvě stránky musí být vytvořen konstruktor, aby se instance instance ovladače získala z hlavní třídy v testovací vrstvě.
Ovladač zde neinicializujeme, spíše je jeho instance přijata z hlavní třídy, když je vytvořen objekt třídy Page Layer.
Pro každou stránku jsou vytvořeny dvě třídy Java, jak je uvedeno níže:
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;
Testovací vrstva
V této třídě jsou implementovány testovací případy.
Vytvoříme samostatný balíček, řekněme, com.automation.test a pak zde vytvoříme třídu Java (MainClass.java).
Kroky k vytvoření testovacích případů:
- Inicializujte ovladač a otevřete aplikaci.
- Vytvořte objekt třídy PageLayer (pro každou webovou stránku) a předejte instanci ovladače jako parametr.
- Pomocí vytvořeného objektu zavolejte metody ve třídě PageLayer (pro každou webovou stránku) a proveďte akce / ověření.
- Opakujte krok 3, dokud nebudou provedeny všechny akce, a poté zavřete ovladač.
//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(); } }
Závěr
Tento kurz vysvětlil výhody modelu Page Object Model a jak vytvořit základní návrhový vzor POM bez použití Page Factory v selenu.
V nadcházejícím tutoriálu probereme ještě další přístup POM, tedy použití přístupu Page Factory.
=> Podívejte se na VŠECHNY výukové programy selenu zde.
Doporučené čtení
- Model objektu stránky (POM) se stránkou Page Factory | Výukový program pro selen
- Spirálový model - Co je to SDLC spirálový model?
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Použití třídy Select Selenium pro zpracování prvků rozevíracího seznamu na webové stránce - Selenium Tutorial # 13
- Úvod do Selenium WebDriver - Selenium Tutorial # 8
- Výukový program ChromeDriver Selenium: Testy selenového webdriveru v prohlížeči Chrome
- 30+ nejlepších návodů na selen: Naučte se selen se skutečnými příklady
- Nabídka pracovních míst na volné noze pro odborníky na selen