page object model selenium without using page factory
Page Object Model (POM) is een ontwerppatroon om objectrepository voor webelementen te onderhouden. Deze tutorial legt uit hoe POM in Selenium kan worden geïmplementeerd zonder Page Factory:
Het script-automatiseringsproject moet zo worden ontworpen dat het is geoptimaliseerd en gemakkelijker te begrijpen. Dit wordt bereikt met behulp van POM die bepaalde richtlijnen volgt om een raamwerk te ontwerpen.
We zullen meer leren over:
- Wat is POM?
- Voordelen van het gebruik van POM in een project
- Hoe maak je een basis-POM zonder de Page Factory Approach te gebruiken?
Bezoek hier voor de exclusieve Selenium Training Tutorial Series.
Wat je leert:
Pagina-objectmodel zonder paginafabriek
Page Object Model is een ontwerppatroon dat wordt gebruikt om de objectrepository voor de webelementen te onderhouden. Hier worden alle webelementen en de bijbehorende methoden voor elke webpagina in een aparte klasse onderhouden. Daarom zal zelfs een enkele wijziging in het kenmerk van een WebElement door alle testcases heen worden weerspiegeld, waar het ook wordt gebruikt. Op deze manier wordt het gemakkelijker om Object Repository te onderhouden.
Page Objects Model is het beste wanneer het wordt gebruikt voor toepassingen met meerdere pagina's of staten.
Hier zijn de video-tutorials:
Deel I
Deel II
Voordelen van POM
Hieronder staan een aantal voordelen van POM:
- Het is gemakkelijker om de code te onderhouden. Eventuele wijzigingen in de gebruikersinterface worden overal in de klas weergegeven.
- Robuust en maakt code leesbaar (methoden hebben meer realistische namen).
- Maakt de code herbruikbaar en vermindert duplicatie van code (objectrepository is onafhankelijk van testcases).
- De code wordt minder en geoptimaliseerd.
Stappen om een POM te maken zonder paginafabriekmodel
# 1) Maak een Java Class voor elke pagina in de applicatie.
#twee) Declareer in elke Klasse alle webelementen als variabel.
# 3) Implementeer overeenkomstige methoden die op de variabelen werken.
Het ontwerppatroon kan worden gestructureerd met behulp van 2 lagen / pakketten:
- Paginalaag houdt de pagina's van de applicatie vast als individuele Java Class. Elke klasse heeft WebElements gedeclareerd als variabelen en de acties die worden uitgevoerd als methoden.
- Testlaag houdt de testcases van de applicatie en het verificatiedeel ervan.
Laten we een voorbeeld nemen van een eenvoudig scenario:
- Open de URL van een applicatie.
- Typ het e-mailadres en wachtwoord.
- Klik op de Login-knop.
- Controleer het succesvolle aanmeldingsbericht op de zoekpagina.
Paginalaag
Hier hebben we 2 pagina's,
- Startpagina : De pagina wordt geopend wanneer de URL wordt ingevoerd en hier voeren we de gegevens in om in te loggen.
- SearchPage : Pagina die wordt weergegeven na een succesvolle login.
In de paginalaag wordt elke pagina in de webapplicatie gedeclareerd als een afzonderlijke Java-klasse en worden de locators en acties daar vermeld.
Stappen om POM te maken met realtime voorbeelden
# 1) Maak een Java-klasse voor elke pagina:
In deze voorbeeld , krijgen we toegang tot 2 webpagina's, 'Home' en 'Zoeken' pagina's. Daarom zullen we 2 Java-klassen maken in de paginalaag (of in een pakket, bijvoorbeeld com.automation.pages).
# 2) Creëer WebElements als variabelen:
statische variabelen declareren in c ++
We zouden interactie hebben met:
- E-mail, wachtwoord, login-knopveld op de startpagina.
- Een succesvol bericht in de SearchPage.
We zullen dus WebElements als variabelen maken met behulp van ‘Op’ klasse.
Bijvoorbeeld: Als e-mail xpath heeft als // div (bevat (@id, ‘EmailId’)), dan is zijn variabele declaratie
// Locator voor veld EmailId
By EmailAddress = By.xpath (// div (bevat (@id, ‘EmailId’)))
# 3) Maak methoden voor acties die worden uitgevoerd op WebElements:
De onderstaande acties worden uitgevoerd op WebElements:
- Typ actie in het veld EmailAddress.
- Typ actie in het veld Wachtwoord.
- Klik op actie op de Login-knop.
Bijvoorbeeld, Door de gebruiker gedefinieerde methoden worden voor elke actie op het WebElement gemaakt als,
Hier wordt de Id doorgegeven als parameter in de methode, aangezien de invoer door de gebruiker wordt verzonden vanuit de hoofdtestcase.
Opmerking Er moet een constructor worden gemaakt voor elke klasse in de paginalaag om de driverinstantie uit de hoofdklasse in de testlaag te krijgen.
We starten de driver hier niet, maar de instantie wordt ontvangen van de Main Class wanneer het object van de Page Layer-klasse wordt gemaakt.
Er worden twee Java-klassen gemaakt voor elke pagina, zoals hieronder weergegeven:
HomePage.java
SearchPage.Java
Testlaag
Testcases zijn geïmplementeerd in deze klasse.
We maken een apart pakket, zeg com.automation.test, en maken hier een Java-klasse (MainClass.java).
Stappen om testcases te maken:
- Initialiseer de driver en open de applicatie.
- Maak een object van de PageLayer-klasse (voor elke webpagina) en geef de driverinstantie als parameter door.
- Gebruik het gemaakte object om de methoden in de PageLayer-klasse (voor elke webpagina) aan te roepen om acties / verificatie uit te voeren.
- Herhaal stap 3 totdat alle acties zijn uitgevoerd en sluit vervolgens de driver.
Gevolgtrekking
In deze tutorial werden de voordelen van het Page Object Model uitgelegd en hoe je een basis POM-ontwerppatroon kunt maken zonder Page Factory in Selenium te gebruiken.
In de komende tutorial zullen we nog een andere benadering van POM bespreken, namelijk de Page Factory-benadering gebruiken.
Bekijk hier ALLE Selenium-handleidingen.
Aanbevolen literatuur
- Page Object Model (POM) met Page Factory | Selenium-zelfstudie
- Spiraalmodel - Wat is het SDLC-spiraalmodel?
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Gebruik van Selenium Selecteer klasse voor het omgaan met vervolgkeuzelijsten op een webpagina - Selenium-zelfstudie # 13
- Inleiding tot Selenium WebDriver - Selenium Tutorial # 8
- ChromeDriver Selenium-zelfstudie: Selenium Webdriver-tests op Chrome
- 30+ beste selenium-zelfstudies: leer selenium met echte voorbeelden
- Parttime freelancen vacature voor seleniumexperts