page object model selenium without using page factory
Page Object Model (POM) è un modello di progettazione per mantenere il repository di oggetti per Web Elements. Questo tutorial spiega come implementare POM in selenio senza Page Factory:
Il progetto di automazione con script deve essere progettato in modo tale da essere ottimizzato e più facile da capire. Ciò si ottiene utilizzando POM che segue alcune linee guida per progettare un framework.
Impareremo di più su:
- Cos'è il POM?
- Vantaggi dell'utilizzo di POM in un progetto
- Come creare un POM di base senza utilizzare l'approccio Page Factory?
=> Visita qui per l'esclusiva serie di tutorial sull'addestramento al selenio.
Cosa imparerai:
Modello a oggetti di pagina senza Page Factory
Page Object Model è un modello di progettazione utilizzato per mantenere il repository di oggetti per gli elementi Web. Qui, tutti gli elementi Web e i metodi corrispondenti vengono mantenuti in una classe separata per ciascuna pagina Web. Quindi, anche una singola modifica nell'attributo di un WebElement si rifletterà in tutti i casi di test, ovunque venga utilizzato. In questo modo, migliora la manutenzione del repository di oggetti più semplice.
Il modello a oggetti di pagina è ideale se utilizzato per applicazioni con più pagine o stati.
Ecco i tutorial video:
Parte I
Seconda parte
Vantaggi di POM
Di seguito sono riportati alcuni vantaggi di POM:
- È più facile mantenere il codice. Qualsiasi modifica all'interfaccia utente si rifletterà ovunque venga utilizzata nella classe.
- Robusto e rende il codice leggibile (i metodi hanno nomi più realistici).
- Rende il codice riutilizzabile e riduce la duplicazione del codice (il repository di oggetti è indipendente dai casi di test).
- Il codice diventa inferiore e ottimizzato.
Passaggi per creare un POM senza Page Factory Model
# 1) Crea una classe Java per ogni pagina dell'applicazione.
#Due) In ogni classe, dichiara tutti gli elementi web come variabili.
# 3) Implementare metodi corrispondenti che agiscono sulle variabili.
Il modello di progettazione può essere strutturato utilizzando 2 strati / pacchetti:
- Livello pagina manterrà le pagine dell'applicazione come classe Java individuale. Ogni classe avrà WebElements dichiarati come variabili e le azioni che vengono eseguite come metodi.
- Livello di prova terrà i test case dell'applicazione e la sua parte di verifica.
Facciamo un esempio di uno scenario semplice:
- Apri l'URL di un'applicazione.
- Digitare l'indirizzo e-mail e i dati della password.
- Fare clic sul pulsante Accedi.
- Verifica il messaggio di accesso riuscito nella pagina di ricerca.
Livello pagina
Qui abbiamo 2 pagine,
- HomePage : La pagina si apre quando viene inserito l'URL ed è qui che inseriamo i dati per il login.
- SearchPage : Pagina che viene visualizzata dopo un accesso riuscito.
Nel livello Pagina, ogni pagina nell'applicazione Web è dichiarata come una classe Java separata e i suoi localizzatori e azioni sono menzionati lì.
Passaggi per creare POM con esempi in tempo reale
# 1) Crea una classe Java per ogni pagina:
In questo esempio , accediamo a 2 pagine web, 'Home' e 'Cerca'. Quindi, creeremo 2 classi Java nel Page Layer (o in un pacchetto, diciamo com.automation.pages).
Package Name : com.automation.pages HomePage.java SearchPage.java# 2) Crea WebElements come variabili:
migliore app cambia voce per pc
Interageremmo con:
- E-mail, password, campo del pulsante di accesso nella home page.
- Un messaggio di successo nella SearchPage.
Quindi creeremo WebElements come variabili utilizzando la classe 'By'.
Per esempio: Se l'e-mail ha xpath come // div (contiene (@id, 'EmailId')), allora la sua dichiarazione di variabile è
// Locator per il campo EmailId
By EmailAddress = By.xpath (// div (contains (@id, 'EmailId')))
# 3) Crea metodi per le azioni eseguite su WebElements:
Le seguenti azioni vengono eseguite su WebElements:
- Digita l'azione nel campo EmailAddress.
- Digita l'azione nel campo Password.
- Fare clic sull'azione sul pulsante Accedi.
Per esempio, I metodi definiti dall'utente vengono creati per ogni azione su WebElement come,
public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) }Qui, l'Id viene passato come parametro nel metodo, poiché l'input verrà inviato dall'utente dal test case principale.
Nota :È necessario creare un costruttore per ogni classe nel livello di pagina per ottenere l'istanza del driver dalla classe principale nel livello di test.
Non iniziamo il driver qui, piuttosto la sua istanza viene ricevuta dalla Main Class quando viene creato l'oggetto della classe Page Layer.
Vengono create due classi Java per ogni pagina come mostrato di seguito:
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; Livello di prova
I casi di test sono implementati in questa classe.
Creiamo un pacchetto separato diciamo com.automation.test e quindi creiamo una classe Java qui (MainClass.java).
Passaggi per creare casi di test:
- Inizializza il driver e apri l'applicazione.
- Crea un oggetto della classe PageLayer (per ogni pagina web) e passa l'istanza del driver come parametro.
- Utilizzando l'oggetto creato, effettuare una chiamata ai metodi nella classe PageLayer (per ogni pagina web) per eseguire azioni / verifica.
- Ripetere il passaggio 3 fino a quando non vengono eseguite tutte le azioni, quindi chiudere il driver.
//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(); } } Conclusione
Questo tutorial ha spiegato i vantaggi del Page Object Model e come creare un modello di progettazione POM di base senza utilizzare Page Factory in Selenium.
Nel prossimo tutorial, discuteremo ancora un altro approccio di POM, ovvero utilizzando l'approccio Page Factory.
=> Controlla TUTTI i tutorial sul selenio qui.
Lettura consigliata
- Page Object Model (POM) con Page Factory | Tutorial sul selenio
- Modello a spirale: che cos'è il modello a spirale SDLC?
- Esercitazione sul selenio di cetriolo: integrazione con WebDriver di selenio Java di cetriolo
- Uso del selenio Seleziona la classe per la gestione degli elementi a discesa su una pagina Web - Esercitazione sul selenio # 13
- Introduzione a Selenium WebDriver - Selenium Tutorial # 8
- Tutorial ChromeDriver Selenium: test webdriver selenio su Chrome
- 30+ Migliori tutorial sul selenio: impara il selenio con esempi reali
- Opportunità di lavoro freelance part-time per esperti di selenio