Pruebas automatizadas & Page Object

17 septiembre
Emilia Bejarano: Sr. QA Engineer
Pruebas automatizadas & Page Object
Page Object es un patrón de diseño que se utiliza en pruebas automatizadas para evitar código duplicado y mejorar el mantenimiento de las mismas.

Un punto importante a tener en cuenta cuando automatizamos es que la UI (interfaz de usuario) puede sufrir cambios. Si nuestras pruebas manipulan directamente los elementos de la página, serán frágiles y requerirán alto mantenimiento.

Cuando diseñamos una prueba automatizada para un sitio web, debemos consultar sus elementos para hacer clic en enlaces/botones y determinar qué se muestra a continuación. El patrón Page Object encapsula el comportamiento de las páginas, o una parte de ella, con una API específica de la aplicación, lo que nos permite escribir tests y manipular elementos de página sin tener que lidiar con el HTML.

En resumen, el patrón Page Object se usa para hacer pruebas funcionales automatizadas. La idea es modelar las páginas y sus comportamientos para lograr pruebas claras de escribir, entender y mantener.

Como ejemplo, vamos a modelar un escenario sencillo utilizando WebDriver y .NET.

Escenario

  1. Acceder a la página de Login
  2. Introducir Username
  3. Introducir Password
  4. Presionar Login
  5. Verificar que el usuario se loguea correctamente

Ejemplo

[Test]

public void LoginPage_SignsTheUserIn()

{

            var loginPage = new LoginPage();

            loginPage.SignIn("maria", "123456");

            var homePage = new HomePage();

            Assert.IsTrue(homePage.IsCurrent());

}

LoginPage.cs

[Css("input[name='username']")]

private IElement usernameInput;

private IElement passwordInput;

private IElement signButton;

this.usernameInput = Browser.GetElementByCss("");

public void SignIn(string username, string password)

{

            this.usernameInput.SetValue(username);                     

            this.passwordInput.SetValue(password);

            this.signInButton.Click();

}

HomePage.cs

public bool IsCurrent()

{

            return this.bannerDiv.IsVisible;

}

Referencias

Otros Ejemplos