¿Qué es POM?
POM es un patrón de diseño que se usa comúnmente en Selenium para automatizar los casos de prueba. Este patrón de diseño se puede usar con cualquier tipo de marco, como el marco híbrido, basado en palabras clave, basado en datos, etc.
El objeto de página es una clase orientada a objetos que actúa como una interfaz para la página de su aplicación bajo prueba. La clase de página contiene elementos web y métodos para interactuar con elementos web. Mientras automatizamos los casos de prueba, creamos el objeto de estas clases de página e interactuamos con los elementos web llamando a los métodos de estas clases.
Patrón de diseño de modelo de objeto de página
Usos del modelo de objetos de página (POM):
este patrón de diseño se usa en Selenium, donde las páginas web están representadas por una clase correspondiente y los elementos web están representados por las variables de la clase y todas las interacciones son posibles a través de los métodos o funciones de la clase. .
Ventajas del modelo POM:
- Reutilización: podemos reutilizar la clase de página si es necesario en diferentes casos de prueba, lo que significa que no necesitamos escribir código para identificar los elementos web y los métodos para interactuar con ellos para cada caso de prueba.
- Mantenibilidad: como podemos ver en la imagen de arriba, el caso de prueba y la clase de página son diferentes entre sí, lo que significa que podemos actualizar fácilmente el código si se agrega cualquier elemento web nuevo o si se actualiza uno existente.
- Legibilidad: como podemos ver en la imagen de arriba, el código de la página está separado del código de prueba, lo que ayuda a mejorar la legibilidad del código.
Implementación del modelo de objetos de página:
Aquí estoy tomando el ejemplo de la aplicación Gmail para mostrar la implementación de POM .
La jerarquía del proyecto de mi proyecto Maven se muestra a continuación:
Jerarquía del proyecto
Clase TestBase:
en esta clase creamos el objeto de la clase WebDriver , maximizamos el navegador, iniciamos Url, etc.
package test_cases; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; public class TestBase { public static WebDriver driver = null; @BeforeSuite public void initialize() throws IOException { System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "\\src\\test\\java\\drivers\\chromedriver.exe"); driver = new ChromeDriver(); // To maximize browser driver.manage().window().maximize(); // Implicit wait driver.manage().timeouts().implicitlyWait( 10, TimeUnit.SECONDS); // To open Gmail site driver.get("https:// www.gmail.com"); } @AfterSuite // Test cleanup public void TeardownTest() { TestBase.driver.quit(); } }
Clase GmailLoginPage:
en esta clase, identificamos los elementos web de la página de inicio de sesión de Gmail y los métodos para interactuar con estos elementos web.
package pages; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.How; public class GmailLoginPage { WebDriver driver; public GmailLoginPage(WebDriver driver) { this.driver = driver; } // Using FindBy for locating elements @FindBy(how = How.XPATH, using = "// input[@type='email']]") WebElement emailTextBox; @FindBy(how = How.XPATH, using = "// input[@type='password']") WebElement passwordTextBox; @FindBy(how = How.XPATH, using = "// div[@role = 'button' and @id = 'identifierNext']") WebElement nextButton; // Defining all the user actions (Methods) //that can be performed in the Facebook home page // This method is to set Email in the email text box public void setEmail(String strEmail) { emailTextBox.sendKeys(strEmail); } // This method is to set Password in the password text box public void setPassword(String strPassword) { passwordTextBox.sendKeys(strPassword); } // This method is to click on Next Button public void clickOnNextButton() { nextButton.click(); } }
Del mismo modo, escribimos el código para la página de inicio de Gmail.
GmailLoginTest:
En esta clase probamos la página de inicio de sesión de Gmail.
package test_cases; import org.openqa.selenium.support.PageFactory; import org.testng.annotations.Test; import pages.GmailHomePage; import pages.GmailLoginPage; public class GmailLoginTest extends TestBase { @Test public void init() throws Exception { // driver.get("https:// www.gmail.com"); GmailLoginPage loginpage = PageFactory.initElements(driver, GmailLoginPage.class); loginpage.setEmail("abc@gmail.com"); loginpage.clickOnNextButton(); loginpage.setPassword("23456@qwe"); loginpage.clickOnNextButton(); } }
¿Escribir código en un comentario? Utilice ide.geeksforgeeks.org , genere un enlace y compártalo aquí.
Publicación traducida automáticamente
Artículo escrito por mukulsingodiya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA