--- title: 'Guía de pruebas automatizadas con Selenium + Robot Framework' --- # Guía de Pruebas Automatizadas con Selenium + Robot Framework La automatización de pruebas contribuye significativamente a mejorar la calidad del software, detectar errores de manera temprana y acelerar los ciclos de desarrollo. Además, facilita la ejecución de pruebas repetitivas en diferentes escenarios, navegadores o configuraciones sin intervención manual constante. En este contexto, herramientas como Selenium y Robot Framework permiten crear soluciones robustas para automatizar pruebas en aplicaciones web. Selenium proporciona la capacidad de controlar navegadores web y simular la interacción de un usuario con la interfaz, mientras que Robot Framework ofrece una estructura clara basada en palabras clave que facilita la creación, lectura y mantenimiento de los casos de prueba. La combinación de estas tecnologías permite desarrollar pruebas automatizadas eficientes, escalables y fáciles de comprender, incluso para equipos que no cuentan con una gran experiencia en programación. A lo largo de esta guía se abordarán los aspectos principales para implementar pruebas automatizadas utilizando Selenium y Robot Framework, incluyendo: - Requisitos previos y configuración del entorno de trabajo - Instalación de Robot Framework, Selenium y las dependencias necesarias - Diseño de pruebas automatizadas mediante archivos `.robot` - Interacción con elementos web utilizando distintos tipos de localizadores - Creación de validaciones para verificar el comportamiento del sistema - Organización de pruebas mediante keywords, recursos y variables - Ejecución de pruebas y generación de reportes automáticos - Aplicación de buenas prácticas para la automatización de pruebas --- ## Requisitos previos y entorno necesario ### Python (obligatorio) Python es el lenguaje base requerido para ejecutar Robot Framework y gestionar las dependencias del proyecto. Comando para verificar la instalación: ```bash python --version ``` ### Robot Framework Robot Framework permite crear y organizar casos de prueba utilizando una sintaxis basada en palabras clave. Comando de instalación: ```bash pip install robotframework ``` ### Selenium y SeleniumLibrary Selenium permite automatizar la interacción con navegadores web mediante la librería SeleniumLibrary. Comandos de instalación: ```bash pip install selenium pip install robotframework-seleniumlibrary ``` ### WebDriver del navegador Es necesario descargar el WebDriver correspondiente al navegador que se va a automatizar (por ejemplo, ChromeDriver para Google Chrome) y asegurarse de que esté en el PATH. ### Visual Studio Code Editor recomendado para crear y ejecutar los archivos `.robot`. --- ## ¿Qué es Robot Framework? Robot Framework es un framework open-source para automatización de pruebas. Permite crear, organizar y ejecutar casos de prueba usando una sintaxis basada en palabras clave (keywords), lo que facilita la lectura y mantenimiento de los tests incluso para personas con poca experiencia en programación. Se integra fácilmente con librerías como SeleniumLibrary para pruebas web, RequestsLibrary para APIs, y muchas otras. --- ## Diseño de pruebas con Robot Framework ### ¿Cómo funciona? Robot Framework organiza las pruebas mediante casos de prueba (Test Cases) y palabras clave (Keywords). - Cada caso de prueba describe una funcionalidad que se desea verificar. - Las palabras clave representan acciones, como abrir un navegador, escribir texto o hacer clic en un botón. - Las pruebas se pueden estructurar para ser reutilizables, legibles y mantenibles, incluso para personas con poca experiencia en programación. ### Estructura de un archivo `.robot` Un archivo `.robot` se divide en secciones principales: ```robot *** Settings *** # Configuración de librerías y recursos *** Variables *** # Declaración de variables reutilizables *** Test Cases *** # Casos de prueba *** Keywords *** # Palabras clave personalizadas ``` ### Ejemplo explicado paso a paso **Archivo:** `tests/login.robot` ```robot *** Settings *** Library SeleniumLibrary *** Variables *** ${URL} https://example.com/login ${USER} admin ${PASSWORD} 123456 *** Test Cases *** Login Correcto Open Browser ${URL} chrome Input Text id=username ${USER} Input Text id=password ${PASSWORD} Click Button id=login Wait Until Page Contains Dashboard Close Browser ``` **Explicación línea por línea:** 1. `Library SeleniumLibrary` → importa las funciones de Selenium para controlar navegadores. 2. **Variables** → `${URL}`, `${USER}`, `${PASSWORD}` se usan para no repetir datos. 3. **Test Case "Login Correcto"** → define un caso de prueba llamado "Login Correcto". 4. `Open Browser` → abre el navegador en la URL indicada. 5. `Input Text` → ingresa el usuario y la contraseña en los campos correspondientes. 6. `Click Button` → hace clic en el botón de login. 7. `Wait Until Page Contains` → espera hasta que la página muestre el texto "Dashboard" (verificación básica de éxito). 8. `Close Browser` → cierra el navegador al finalizar la prueba. --- ## Interacción con elementos web usando Selenium ### Tipos de localizadores Para automatizar pruebas web, Selenium permite identificar elementos de la página mediante localizadores. Los más comunes son: | Localizador | Descripción | |---|---| | `id` | Selecciona por el atributo `id` del elemento | | `name` | Selecciona por el atributo `name` | | `xpath` | Selecciona por la ruta XPath del elemento | | `css selector` | Selecciona usando selectores CSS | | `class name` | Selecciona por la clase CSS del elemento | | `link text` / `partial link text` | Selecciona enlaces por su texto completo o parcial | Ejemplo en Robot Framework: ```robot Input Text id=username ${USER} Click Button css=.btn-login ``` ### Acciones comunes en pruebas | Acción | Descripción | |---|---| | `Open Browser` | Abrir un navegador en una URL | | `Input Text` | Escribir texto en un campo | | `Click Button` / `Click Element` | Hacer clic en botones o enlaces | | `Select From List By Value / Label` | Seleccionar opciones en menús desplegables | | `Get Text` / `Element Should Contain` | Obtener o validar texto en la página | | `Close Browser` | Cerrar el navegador al finalizar la prueba | ### Esperas y sincronización Para asegurar que los elementos estén disponibles antes de interactuar, es importante usar esperas: - `Wait Until Element Is Visible` → espera hasta que el elemento aparezca en la página. - `Wait Until Page Contains` → espera hasta que aparezca cierto texto en la página. - `Sleep` → espera un tiempo fijo (menos recomendado). Ejemplo: ```robot Wait Until Element Is Visible id=login Input Text id=username ${USER} ``` --- ## Validaciones esenciales en pruebas Las validaciones permiten comprobar que la aplicación se comporta como se espera y son esenciales para garantizar la calidad del software. ### Verificación de elementos Se asegura que un elemento esté presente o visible antes de interactuar con él: ```robot Element Should Be Visible id=login-button Element Should Exist css=.form-input ``` - `Element Should Be Visible` → verifica que el elemento esté visible en la página. - `Element Should Exist` → verifica que el elemento exista en el DOM, aunque no sea visible. ### Validación de texto en la página Se comprueba que el contenido mostrado en la página sea correcto: ```robot Page Should Contain Dashboard Element Text Should Be id=welcome-msg Bienvenido, ${USER} ``` - `Page Should Contain` → valida que la página contenga un texto específico. - `Element Text Should Be` → valida que el texto de un elemento coincida exactamente con lo esperado. ### Uso de validaciones (asserts) Las validaciones permiten detener la prueba si ocurre un error, garantizando que los resultados sean confiables: ```robot Should Be Equal ${resultado} 10 Should Not Be Empty ${mensaje} ``` - `Should Be Equal` → compara dos valores y falla si no son iguales. - `Should Not Be Empty` → verifica que un valor no esté vacío. --- ## Gestión y organización de pruebas ### Keywords reutilizables Crear palabras clave personalizadas para acciones repetitivas y mejorar la mantenibilidad de los casos de prueba. ### Archivos de recursos Centralizar keywords y variables en archivos `.robot` o `.resource` para su reutilización en múltiples pruebas. ### Variables Definir variables globales para URLs, usuarios, contraseñas y otros datos que se repitan, facilitando cambios rápidos y consistentes. --- ## Estructura y ejecución de suites ### Agrupación de pruebas en suites Organizar los casos de prueba por funcionalidad o módulo, permitiendo ejecutar grupos de pruebas de manera ordenada y selectiva. ### Ejecución de pruebas - **Desde terminal:** ejecutar pruebas con el comando: ```bash robot nombre_archivo.robot ``` - **Desde Visual Studio Code:** usar la terminal integrada o extensiones de Robot Framework para ejecutar los tests. ### Generación de reportes automáticos Robot Framework crea automáticamente archivos HTML de reportes y logs, mostrando resultados detallados de cada ejecución: - `report.html` → resumen visual. - `log.html` → paso a paso de la ejecución. --- ## Buenas prácticas y solución de errores ### Errores comunes y soluciones | Error | Solución | |---|---| | Elementos no encontrados | Usar localizadores estables (`id`, `data-*`) y esperas explícitas | | Problemas de sincronización | Aplicar `Wait Until Element Is Visible` o `Wait Until Page Contains` | | Versiones incompatibles de WebDriver | Verificar compatibilidad con el navegador y la versión de Selenium | ### Buenas prácticas profesionales - Reutilizar keywords y variables. - Mantener nombres descriptivos para tests y keywords. - Organizar pruebas en suites lógicas. - Documentar los tests para facilitar mantenimiento y colaboración. - Probar en múltiples navegadores y entornos antes de producción. --- ## Referencias - (2022). *Robotframework.org*. https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html - Ruiz, J. M. (2025, March 7). *Tutorial Robot Framework: Instalación y primeros pasos*. DEV Community. https://dev.to/jmr85/tutorial-robot-framework-instalacion-y-primeros-pasos-5cal