Repaso
English
TestingIntermedioTST-35

¿Qué es el Page Object Model (POM)?

Opciones

  1. Cada página es una clase con locators y acciones (Opción correcta)
  2. Una forma de guardar fotos que los tests compararán
  3. Un plugin de Maven que construye las páginas de la app
  4. 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.

Términos clave

Practica esta pregunta en Repaso