page object model selenium without using page factory
Page Object Model (POM) er et designmønster til vedligeholdelse af objektlager til webelementer. Denne vejledning forklarer, hvordan man implementerer POM i selen uden sidefabrik:
Det scriptede automatiseringsprojekt skal designes på en sådan måde, at det er optimeret og lettere at forstå. Dette opnås ved hjælp af POM, som følger visse retningslinjer for at designe en ramme.
Vi lærer mere om:
- Hvad er POM?
- Fordele ved at bruge POM i et projekt
- Hvordan oprettes en grundlæggende POM uden brug af Page Factory Approach?
=> Besøg her for den eksklusive tutorial-serie om træning af selen.
Hvad du vil lære:
Sideobjektmodel uden sidefabrik
Sideobjektmodel er et designmønster, der bruges til at vedligeholde objektlager til webelementerne. Her opretholdes alle webelementerne og deres tilsvarende metoder i en separat klasse for hver webside. Derfor vil selv en enkelt ændring i attributten til et WebElement afspejle på tværs af alle testsagerne, uanset hvor det bruges. På denne måde forbedrer det lettere vedligeholdelse af Object Repository.
Sideobjektmodellen er bedst, når den bruges til applikationer, der har flere sider eller tilstande.
Her er videovejledningerne:
Del I
Del II
Fordele ved POM
Nedenfor er et par fordele ved POM:
- Det er lettere at vedligeholde koden. Ændringer i brugergrænsefladen afspejler, hvor det bruges i klassen.
- Robust og gør koden læsbar (Metoder har mere realistiske navne).
- Gør koden genanvendelig og reducerer duplikering af koden (Objektopbevaring er uafhængig af testtilfælde).
- Koden bliver mindre og optimeret.
Trin til oprettelse af en POM uden sidefabriksmodel
# 1) Opret en Java-klasse for hver side i applikationen.
#to) I hver klasse erklæres alle webelementer som variable.
# 3) Implementere tilsvarende metoder, der virker på variablerne.
Designmønsteret kan struktureres ved hjælp af 2 lag / pakker:
- Sidelag holder applikationens sider som individuel Java-klasse. Hver klasse vil have WebElements deklareret som variabler og de handlinger, der udføres som metoder.
- Test lag holder testsagerne for applikationen og dens verifikationsdel.
Lad os tage et eksempel på et simpelt scenario:
- Åbn URL'en til en applikation.
- Indtast e-mail-adresse og adgangskodedata.
- Klik på knappen Login.
- Bekræft vellykket loginbesked på søgesiden.
Sidelag
Her har vi 2 sider,
- Hjemmeside : Siden åbnes, når URL'en indtastes, og det er her, vi indtaster dataene til login.
- Søgeside : Side, der vises efter et vellykket login.
I sidelaget erklæres hver side i webapplikationen som en separat Java-klasse, og dens lokaliseringer og handlinger er nævnt der.
Trin til oprettelse af POM med eksempler i realtid
# 1) Opret en Java-klasse for hver side:
Heri eksempel , får vi adgang til 2 websider, 'Hjem' og 'Søg' -sider. Derfor opretter vi 2 Java-klasser i sidelaget (eller i en pakke siger com.automation.pages).
Package Name : com.automation.pages HomePage.java SearchPage.java
# 2) Opret WebElements som variabler:
hvordan man åbner nøglefilen i Windows
Vi ville interagere med:
- E-mail, adgangskode, felt til login-knappen på hjemmesiden.
- En vellykket besked på SearchPage.
Så vi opretter WebElements som variabler ved hjælp af 'By' klasse.
For eksempel: Hvis e-mail har xpath som // div [indeholder (@id, 'EmailId')], så er dens variable erklæring
// Finder til EmailId-felt
Ved EmailAddress = By.xpath (// div [indeholder (@id, 'EmailId')])
# 3) Opret metoder til handlinger, der udføres på WebElements:
Nedenstående handlinger udføres på WebElements:
- Skriv handling i feltet EmailAddress.
- Skriv handling i feltet Adgangskode.
- Klik på handling på knappen Login.
For eksempel, Brugerdefinerede metoder oprettes for hver handling på WebElement som,
public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) }
Her videregives Id'et som en parameter i metoden, da input sendes af brugeren fra hovedtestsagen.
Bemærk :Der skal oprettes en konstruktør for hver klasse i sidelaget for at hente driverinstansen fra hovedklassen i testlaget.
Vi initierer ikke driveren her, snarere modtages dens forekomst fra hovedklassen, når objektet til sidelagsklassen oprettes.
To Java-klasser oprettes for hver side som vist nedenfor:
Hjemmeside.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;
Test lag
Testcases implementeres i denne klasse.
Vi opretter en separat pakke siger, com.automation.test og opretter derefter en Java-klasse her (MainClass.java).
Trin til at oprette testsager:
- Initialiser driveren, og åbn applikationen.
- Opret et objekt fra PageLayer-klassen (for hver webside), og send driverinstansen som en parameter.
- Brug det oprettede objekt til at ringe til metoderne i PageLayer-klassen (for hver webside) for at udføre handlinger / verifikation.
- Gentag trin 3, indtil alle handlinger er udført, og luk derefter driveren.
//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(); } }
Konklusion
Denne vejledning forklarede fordelene ved Page Object Model og hvordan man opretter et grundlæggende POM-designmønster uden at bruge Page Factory i Selen.
I den kommende vejledning vil vi diskutere endnu en tilgang til POM, det vil sige ved hjælp af Page Factory tilgang.
=> Tjek ALLE Selen-vejledninger her.
Anbefalet læsning
- Sideobjektmodel (POM) med sidefabrik | Selen Tutorial
- Spiral Model - Hvad er SDLC Spiral Model?
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Brug af selen Vælg klasse til håndtering af dropdown-elementer på en webside - Selen Tutorial # 13
- Introduktion til Selen WebDriver - Selen Tutorial # 8
- ChromeDriver Selenium-tutorial: Selenium Webdriver-test på Chrome
- 30+ bedste selen-tutorials: Lær selen med rigtige eksempler
- Deltids freelancing jobmulighed for seleneksperter