¿Qué es el Page Object Model (POM)?
Opciones
- Cada página es una clase con locators y acciones (Opción correcta)
- Una forma de guardar fotos que los tests compararán
- Un plugin de Maven que construye las páginas de la app
- Un esquema de base de datos que describe las páginas
Respuesta
Un patrón de diseño donde cada página (o componente) es una clase con sus locators y acciones, para que los tests se lean como pasos de usuario y un cambio de UI se arregle en un solo sitio
Por qué
Sin POM, los locators están repartidos por los tests; cuando cambia el id de un botón editas decenas de tests.
Con POM, LoginPage tiene métodos como loginAs(user, pass); los tests los llaman y nunca mencionan locators. Si cambia la UI, arreglas la clase de la página una vez.
Los tests se vuelven legibles: loginPage.loginAs("ana", "secret"); assertTrue(dashboard.isVisible());
public class LoginPage {
private final WebDriver driver;
public LoginPage(WebDriver d) { this.driver = d; }
public DashboardPage loginAs(String user, String pass) {
driver.findElement(By.id("user")).sendKeys(user);
driver.findElement(By.id("pass")).sendKeys(pass);
driver.findElement(By.id("login")).click();
return new DashboardPage(driver);
}
}Recuerda
POM = una clase por página; los locators viven ahí, no en los tests.