page object model selenium without using page factory
Page Object Model (POM) er et designmønster for å opprettholde objektlager for webelementer. Denne opplæringen forklarer hvordan du implementerer POM i selen uten sidefabrikk:
Det skriptede automatiseringsprosjektet må utformes på en slik måte at det er optimalisert og lettere å forstå. Dette oppnås ved bruk av POM som følger visse retningslinjer for å designe et rammeverk.
Vi lærer mer om:
- Hva er POM?
- Fordeler med å bruke POM i et prosjekt
- Hvordan lage en grunnleggende POM uten å bruke Page Factory Approach?
=> Besøk her for den eksklusive opplæringsserien for selen.
Hva du vil lære:
Sideobjektmodell uten sidefabrikk
Page Object Model er et designmønster som brukes til å vedlikeholde Object repository for Web Elements. Her opprettholdes alle webelementene og deres tilhørende metoder i en egen klasse for hver webside. Derfor vil til og med en enkelt endring i attributtet til et WebElement reflektere over alle testtilfellene uansett hvor det brukes. På denne måten forbedrer det enklere vedlikehold av Object Repository.
Sideobjektmodellen er best når den brukes til applikasjoner som har flere sider eller tilstander.
Her er videoopplæringen:
Del I
Del II
Fordeler med POM
Nedenfor er noen fordeler med POM:
- Det er lettere å vedlikeholde koden. Eventuelle endringer i brukergrensesnittet gjenspeiles uansett hvor det brukes i klassen.
- Robust og gjør koden lesbar (Metoder har mer realistiske navn).
- Gjør koden gjenbrukbar og reduserer duplisering av koden (Objektregister er uavhengig av testtilfeller).
- Koden blir mindre og optimalisert.
Fremgangsmåte for å lage en POM uten sidefabrikkmodell
#1) Lag en Java-klasse for hver side i applikasjonen.
#to) I hver klasse, erklær alle webelementene som variable.
# 3) Implementere tilsvarende metoder som virker på variablene.
Designmønsteret kan struktureres med to lag / pakker:
- Sidelag vil holde sidene i applikasjonen som individuell Java-klasse. Hver klasse vil ha WebElements deklarert som variabler og handlingene som utføres som metoder.
- Test lag vil holde test tilfeller av søknaden og dens bekreftelsesdel.
La oss ta et eksempel på et enkelt scenario:
- Åpne nettadressen til et program.
- Skriv inn e-postadressen og passorddataene.
- Klikk på Logg inn-knappen.
- Bekreft vellykket påloggingsmelding på søkesiden.
Sidelag
Her har vi to sider,
- Hjemmeside : Siden åpnes når URL-adressen legges inn, og det er her vi legger inn dataene for pålogging.
- Søkeside : Side som vises etter vellykket pålogging.
I sidelaget blir hver side i webapplikasjonen erklært som en egen Java-klasse, og dens lokatorer og handlinger er nevnt der.
Fremgangsmåte for å lage POM med sanntidseksempler
# 1) Opprett en Java-klasse for hver side:
I dette eksempel , får vi tilgang til 2 nettsider, 'Hjem' og 'Søk' -sider. Derfor vil vi lage to Java-klasser i sidelaget (eller i en pakke si com.automation.pages).
Package Name : com.automation.pages HomePage.java SearchPage.java
# 2) Opprett WebElements som variabler:
hva er den beste gratis datamaskinrenseren?
Vi vil samhandle med:
- E-post, passord, påloggingsfelt på hjemmesiden.
- En vellykket melding på SearchPage.
Så vi vil lage WebElements som variabler ved hjelp av 'By' -klassen.
For eksempel: Hvis e-post har xpath som // div [inneholder (@id, ‘EmailId’)], da er dens variable erklæring
// Locator for EmailId-feltet
By EmailAddress = By.xpath (// div [inneholder (@id, ‘EmailId’)])
# 3) Lag metoder for handlinger utført på WebElements:
Handlingene nedenfor utføres på WebElements:
- Skriv inn handling i feltet EmailAddress.
- Skriv inn handling i Passord-feltet.
- Klikk på handlingen på Logg inn-knappen.
For eksempel, Brukerdefinerte metoder opprettes for hver handling på WebElement som,
public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) }
Her blir ID gitt som en parameter i metoden, da inngangen vil bli sendt av brukeren fra hovedtesttilfellet.
Merk :Det må opprettes en konstruktør for hver klasse i sidelaget for å få driverinstansen fra hovedklassen i testlaget.
Vi starter ikke driveren her, snarere mottas forekomsten fra hovedklassen når objektet til sidelagsklassen blir opprettet.
To Java-klasser opprettes 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
Test tilfeller er implementert i denne klassen.
Vi lager en egen pakke si, com.automation.test og lager deretter en Java-klasse her (MainClass.java).
Fremgangsmåte for å lage testsaker:
- Initialiser driveren og åpne applikasjonen.
- Opprett et objekt fra PageLayer-klassen (for hver webside) og send driverinstansen som en parameter.
- Bruk objektet som er opprettet, ring til metodene i PageLayer-klassen (for hver webside) for å utføre handlinger / verifisering.
- Gjenta trinn 3 til alle handlingene er utført, og lukk deretter 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(); } }
Konklusjon
Denne opplæringen forklarte fordelene med Page Object Model og hvordan du lager et grunnleggende POM-designmønster uten å bruke Page Factory i Selen.
I den kommende opplæringen vil vi diskutere enda en tilnærming av POM, det vil si ved hjelp av Page Factory-tilnærmingen.
=> Sjekk ALLE Selen-opplæringsprogrammer her.
Anbefalt lesing
- Sideobjektmodell (POM) med sidefabrikk | Selen Tutorial
- Spiral Model - Hva er SDLC Spiral Model?
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Bruk av Selen Select Class for håndtering av nedtrekkselementer på en webside - Selenium Tutorial # 13
- Introduksjon til Selenium WebDriver - Selenium Tutorial # 8
- ChromeDriver Selenium Tutorial: Selenium Webdriver Tests on Chrome
- 30+ beste selenopplæringsprogrammer: Lær selen med virkelige eksempler
- Deltids-frilansende jobbmulighet for seleneksperter