page object model selenium without using page factory
Model objekata stranice (POM) je obrazac dizajna za održavanje spremišta objekata za web elemente. Ovaj vodič objašnjava kako implementirati POM u selen bez tvornice stranica:
Skriptirani projekt automatizacije mora biti dizajniran na takav način da bude optimiziran i lakši za razumijevanje. To se postiže korištenjem POM-a koji slijedi određene smjernice za dizajn okvira.
Saznat ćemo više o:
- Što je POM?
- Prednosti upotrebe POM-a u projektu
- Kako stvoriti osnovni POM bez upotrebe pristupa tvornice stranica?
=> Posjetite ovdje za ekskluzivnu seriju vodiča za trening selena.
Što ćete naučiti:
Model objekta stranice bez tvornice stranica
Model objekta stranice je obrazac dizajna koji se koristi za održavanje spremišta objekata za web-elemente. Ovdje se svi web elementi i njihove odgovarajuće metode održavaju u zasebnom razredu za svaku web stranicu. Stoga će se čak i jedna promjena atributa WebElementa odraziti u svim testnim slučajevima gdje god se koristi. Na taj način poboljšava lakše održavanje Spremišta objekata.
Model objekata stranica najbolji je kada se koristi za aplikacije koje imaju više stranica ili stanja.
Evo video tutorijala:
I dio
II dio
Prednosti POM-a
Slijedi nekoliko prednosti POM-a:
- Lakše je održavati kôd. Sve promjene korisničkog sučelja odražavat će se gdje god se koristile u klasi.
- Robustan i čini kôd čitljivim (metode imaju realističnija imena).
- Čini kod višekratnim i smanjuje dupliciranje koda (Spremište objekata neovisno je o testnim slučajevima).
- Kôd postaje manje i optimiziran.
Koraci za stvaranje POM-a bez tvorničkog modela stranice
# 1) Stvorite Java klasu za svaku stranicu u aplikaciji.
#dva) U svakoj klasi deklarirajte sve web elemente kao varijable.
# 3) Primijeniti odgovarajuće metode koje djeluju na varijable.
Uzorak dizajna može se strukturirati pomoću 2 sloja / paketa:
- Sloj stranice stranice aplikacije držat će se kao pojedinačna Java klasa. Svaka klasa imat će WebElements deklarirane kao varijable i radnje koje se izvode kao metode.
- Testni sloj održat će test slučajeve prijave i dio za njezinu provjeru.
Uzmimo primjer jednostavnog scenarija:
- Otvorite URL aplikacije.
- Upišite adresu e-pošte i lozinku.
- Kliknite gumb Prijava.
- Provjerite uspješnu poruku za prijavu na stranici za pretraživanje.
Sloj stranice
Ovdje imamo 2 stranice,
- Početna stranica : Stranica se otvara kad se unese URL i tu unosimo podatke za prijavu.
- SearchPage : Stranica koja se prikazuje nakon uspješne prijave.
U sloju stranice, svaka stranica u web aplikaciji deklarirana je kao zasebna Java klasa i tamo su spomenuti njezini lokatori i radnje.
Koraci za stvaranje POM-a na primjerima u stvarnom vremenu
# 1) Stvorite Java klasu za svaku stranicu:
U ovome primjer , pristupit ćemo 2 web stranicama, stranicama „Početna“ i „Pretraživanje“. Stoga ćemo stvoriti 2 Java klase u sloju stranice (ili u paketu recimo com.automation.pages).
Package Name : com.automation.pages HomePage.java SearchPage.java
# 2) Stvorite WebElements kao varijable:
pregledati moju web stranicu u različitim preglednicima
Surađivali bismo sa:
- E-pošta, lozinka, polje gumba za prijavu na početnoj stranici.
- Uspješna poruka na stranici pretraživanja.
Tako ćemo WebElements stvoriti kao varijable koristeći klasu 'By'.
Na primjer: Ako e-pošta ima xpath kao // div (sadrži (@id, ‘EmailId’)), tada je njegova deklaracija varijable
// Polje Locator for EmailId
By EmailAddress = By.xpath (// div (sadrži (@id, ‘EmailId’)))
# 3) Stvorite metode za radnje izvršene na WebElements:
Ispod se izvršavaju radnje na WebElements:
- Upišite radnju u polje EmailAddress.
- Upišite radnju u polje Lozinka.
- Kliknite akciju na gumbu Prijava.
Na primjer, Korisnički definirane metode kreiraju se za svaku radnju na WebElementu kao,
public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) }
Ovdje se Id prenosi kao parametar u metodi, jer će ulaz poslati korisnik iz glavnog test slučaja.
Bilješka :Za svaku klasu u sloju stranice treba stvoriti konstruktor da bi se instanca upravljačkog programa preuzela iz glavne klase u testnom sloju.
Ovdje ne pokrećemo pokretački program, već se njegova instanca dobiva iz glavne klase kada se kreira objekt klase Page Layer.
Dvije Java klase kreiraju se za svaku stranicu kako je prikazano u nastavku:
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;
Testni sloj
U ovoj se klasi provode test slučajevi.
Izrađujemo zasebni paket recimo com.automation.test, a zatim ovdje stvaramo Java Class (MainClass.java).
Koraci za stvaranje test slučajeva:
- Inicijalizirajte upravljački program i otvorite aplikaciju.
- Stvorite objekt klase PageLayer (za svaku web stranicu) i proslijedite instancu upravljačkog programa kao parametar.
- Koristeći stvoreni objekt, uputite poziv metodama iz klase PageLayer (za svaku web stranicu) za obavljanje radnji / provjere.
- Ponavljajte korak 3 dok se ne izvrše sve radnje, a zatim zatvorite upravljački program.
//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(); } }
Zaključak
Ovaj je vodič objasnio prednosti Page Object Modela i kako stvoriti osnovni obrazac POM dizajna bez korištenja Page Factory u Seleniju.
U nadolazećem uputstvu razgovarat ćemo o još jednom pristupu POM-a, odnosno korištenju pristupa Page Factory.
=> Ovdje provjerite SVE tutorijale za selenij.
Preporučena literatura
- Model objekta stranice (POM) s tvornicom stranica | Vodič za selen
- Spiralni model - što je SDLC spiralni model?
- Vodič za selenij krastavaca: Integracija Java Selenium WebDriver za krastavac
- Korištenje selenijske klase za rukovanje padajućim elementima na web stranici - Vodič za selenij br. 13
- Uvod u Selenium WebDriver - Vodič za selenij br. 8
- Vodič za ChromeDriver Selenium: Testovi Selenium Webdriver-a na Chromeu
- 30+ najboljih vodiča za selen: naučite selen na stvarnim primjerima
- Prilika za honorarno honorarno zapošljavanje stručnjaka za selen