Inicio / Artículos / 🎭 Playwright con Python: Base UI Automation (POM)

🎭 Playwright con Python: Base UI Automation (POM)

🎭 Playwright con Python: Base UI Automation (POM)

Base UI Automation con Playwright + Python

Este proyecto es una base simple y didáctica usando Page Object Model para automatizar:

La idea es que el código sea fácil de leer para personas que recién empiezan.

El objetivo del ejercicio es automatizar, el login, (usuario y password “challenge”), cuentas y saldos utilizando el patron de diseño Page Object Model.

Instalación del entorno (Windows / WSL(Ubuntu) / VSCode)

  • Solo si estas en Ubuntu:
sudo apt update
sudo apt install python3-venv
  • Crear entorno virtual

Windows:

python -m venv venv

Ubuntu:

python3 -m venv venv

Esto crea la carpeta venv/ dentro del proyecto.

  • Activar entorno virtual

Ubuntu:

      source venv/bin/activate

Windows:

      venv/bin/activate

Si salió bien, vas a ver el prefijo (venv) en la consola:

(venv) ruta del proyecto/proyecto$

  • Actualizar pip (recomendado) (Windows y Ubuntu)
      pip install --upgrade pip
  • Instalar dependencias necesarias (Windows y Ubuntu)
      pip install playwright
      pip install pytest-playwright
      pip install pytest
      pip install pytest-html

Alternativa:

pip install -r requirements.txt
  • Instalar navegadores(Windows y Ubuntu):
      playwright install

Este paso descarga los navegadores que usa Playwright (Chromium, Firefox, WebKit). Si no lo ejecutás, la automatización no va a funcionar.

  • instala libs del sistema solo en ubuntu:
      playwright install-deps

Notas importantes

Todos los comandos deben ejecutarse desde la terminal de VSCode. Siempre verificar que el entorno virtual esté activado ((venv) visible).

Estructura base “recomendada” de un proyecto

venv/
pages/
  base_page.py
  login_page.py
  home_page.py
tests/
  test_login.py
  test_home.py  
requirements.txt
README.md

Diseño general

1) BasePage

Responsabilidad: centralizar acciones comunes de UI.

Funciones incluidas:

  • abrir_url(url)
  • click(selector)
  • escribir(selector, texto)
  • esperar_visible(selector)
  • obtener_texto(selector)
  • seleccionar_opcion(selector, valor)
  • scroll_hasta_elemento(selector)
  • capturar_pantalla(nombre_archivo)
  • etc

Criterio de errores:

  • En acciones principales se usa try/except.
  • Cuando falla una acción, se intenta capturar screenshot.
  • Se imprime un mensaje claro.
  • Se relanza la excepción para no ocultar fallas.

2) LoginPage

Responsabilidad: modelar el comportamiento de la pantalla de login.

Funciones incluidas:

  • abrir()
  • validar_pagina_login()
  • completar_usuario(usuario)
  • completar_password(password)
  • click_iniciar_sesion()
  • iniciar_sesion(usuario, password)

Selectores:

  • Prioridad a data-testid:
    • login-form
    • username-input
    • password-input
    • login-button

3) HomePage

Responsabilidad: modelar acciones y validaciones de Home.

Funciones incluidas:

  • validar_home()
  • seleccionar_tarjeta(valor)
  • consultar_cuentas()
  • validar_cuentas_visibles()
  • ver_saldo_primera_cuenta()
  • validar_saldo_visible()
  • click_salir()

Selectores:

  • Prioridad a data-testid (locator) cuando existe.

Diseño general

Recomendación de ejecución de los test:

python -m pytest tests/test_login.py