Debugging

Intermedio
Selenium
Selenium
Actualizado: 05/09/2025

¡Desbloquea el curso de Selenium completo!

IA
Ejercicios
Certificado
Entrar

Mira la lección en vídeo

Accede al vídeo completo de esta lección y a más contenido exclusivo con el Plan Plus.

Desbloquear Plan Plus

Técnicas de debugging en Selenium IDE

Cuando un test falla en Selenium IDE, es fundamental aplicar un enfoque metodológico para identificar y resolver el problema. El debugging efectivo requiere comprender tanto las causas comunes de fallos como las estrategias sistemáticas para diagnosticarlos.

Identificación de problemas comunes

Los fallos en Selenium IDE suelen seguir patrones predecibles que facilitan su diagnóstico. Los errores más frecuentes incluyen elementos que no se encuentran, tiempos de espera insuficientes, cambios en la estructura de la página y localizadores obsoletos.

La primera técnica consiste en verificar si el elemento objetivo sigue existiendo en la página. Utiliza las herramientas de desarrollador del navegador (F12) para inspeccionar el elemento y confirmar que su estructura HTML no ha cambiado. Muchos fallos ocurren porque los desarrolladores modifican IDs, clases o la jerarquía de elementos.

Ejemplo de verificación manual:

<!-- Si tu test busca: id=submit-btn -->
<!-- Verifica que el botón siga teniendo ese ID: -->
<button id="submit-btn" class="primary">Enviar</button>

Estrategia de eliminación por descarte

Una técnica fundamental es el debugging por eliminación. Ejecuta tu test comando por comando para identificar exactamente dónde falla. Comenta temporalmente los comandos posteriores al que falla y ejecuta solo hasta ese punto.

Para comentar comandos temporalmente:

  • Selecciona el comando en Selenium IDE
  • Usa el menú contextual para deshabilitarlo
  • O añade "//" al inicio del comando en el campo Command

Esta aproximación te permite aislar el problema y determinar si el fallo se debe al comando específico o a un estado previo incorrecto de la página.

Verificación de localizadores

Los localizadores defectuosos son la causa más común de fallos. Antes de asumir que hay un problema de timing, verifica que el localizador sigue siendo válido. Selenium IDE incluye una herramienta integrada para probar localizadores en tiempo real.

Técnica de verificación:

  1. Navega manualmente a la página donde falla el test
  2. Abre Selenium IDE y usa la herramienta "Find" (a la derecha de Target en el editor de comandos)
  3. Introduce el localizador problemático
  4. Observa si se resalta el elemento correcto

Si el localizador no encuentra nada, necesitas actualizarlo usando las técnicas aprendidas en lecciones anteriores sobre CSS, XPath o localizadores básicos.

Análisis del estado de la página

Muchos fallos ocurren porque la página no está en el estado esperado cuando se ejecuta un comando. Verifica sistemáticamente:

  • Elementos dinámicos: ¿Se carga el elemento después de una operación AJAX?
  • Visibilidad: ¿Está el elemento presente pero oculto?
  • Habilitación: ¿Está el elemento visible pero deshabilitado?
  • Contenido: ¿Ha cambiado el texto o valor del elemento?

Técnica de simplificación

Cuando un test complejo falla, simplifica creando un test mínimo que reproduzca solo la acción problemática. Esto elimina variables y te permite concentrarte en el problema específico.

Ejemplo de simplificación:

// Test original complejo que falla:
open | /login
type | id=username | usuario
type | id=password | secreto  
click | id=submit
waitForElementPresent | id=dashboard
click | css=.menu-item[data-section="reports"]  // ← Falla aquí

// Test simplificado para debugging:
open | /dashboard  // Navega directamente
waitForElementPresent | id=dashboard
click | css=.menu-item[data-section="reports"]  // Aísla el problema

Validación de condiciones previas

Antes de ejecutar un comando, verifica las condiciones que deben cumplirse. Usa comandos de verificación para confirmar que la página está en el estado correcto:

// Verifica condiciones antes del comando problemático:
assertElementPresent | css=.menu-item[data-section="reports"]
assertElementVisible | css=.menu-item[data-section="reports"]  
assertElementClickable | css=.menu-item[data-section="reports"]
// Solo entonces ejecuta la acción:
click | css=.menu-item[data-section="reports"]

Técnica de comparación con grabación nueva

Si un test que funcionaba previamente ahora falla, graba la misma secuencia manualmente en una nueva sesión. Compara los comandos generados automáticamente con tu test existente para identificar qué ha cambiado en la aplicación.

Esta técnica es especialmente útil para detectar cambios sutiles en localizadores o flujos de navegación que podrían haber pasado desapercibidos.

Debugging de timing y sincronización

Los problemas de sincronización requieren un enfoque específico. Si sospechas que un comando falla por ejecutarse demasiado pronto:

  1. Añade comandos waitFor antes del comando problemático
  2. Incrementa temporalmente el timeout global (Step Timeout)
  3. Usa pause como medida temporal para confirmar si es un problema de timing

No utilices permanentemente **pause** - siempre reemplázalo con comandos waitFor apropiados una vez identificado el problema.

Logs, breakpoints y paso a paso

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

Selenium IDE proporciona herramientas integradas que permiten examinar detalladamente la ejecución de tests, pausar en puntos específicos y avanzar comando por comando para identificar problemas con precisión.

Panel de logs y su interpretación

El panel de logs de Selenium IDE es tu ventana principal para comprender qué sucede durante la ejecución. Se encuentra en la parte inferior de la interfaz y muestra información detallada sobre cada comando ejecutado.

Interpretación de mensajes de error comunes:

Element not found: id=submit-button
→ El localizador no encuentra el elemento en la página actual

Timeout waiting for element: css=.loading-spinner
→ El elemento no apareció dentro del tiempo límite establecido

Element not interactable: xpath=//button[@disabled]
→ El elemento existe pero no se puede interactuar con él

Información detallada en logs

Cada entrada del log proporciona contextos específicos que ayudan en el debugging:

  • Timestamp: Momento exacto de ejecución del comando
  • Comando: La acción que se intentó realizar
  • Objetivo: El localizador utilizado
  • Resultado: Éxito, fallo o advertencia
  • Detalles: Información adicional sobre el error o resultado

Para maximizar la utilidad de los logs, mantén visible el panel durante las ejecuciones de debugging. Los mensajes aparecen en tiempo real, permitiéndote correlacionar cada acción con su resultado inmediato.

Establecimiento de breakpoints

Los breakpoints permiten pausar la ejecución en comandos específicos para examinar el estado de la página en ese momento preciso. Esta funcionalidad es especialmente valiosa cuando necesitas verificar condiciones antes de que se ejecute un comando problemático.

Para establecer un breakpoint:

  1. En cada comando, en la parte derecha aparece un símbolo de pausa (dos líneas paralelas)
  2. Al hacer click sobre el símbolo de pause se marcará en azul, indicando que el breakpoint está activo
  3. Ejecuta el test - se pausará automáticamente en ese punto
  4. Vuelve a hacer click para desmarcar el símbolo de pause y quitar el breakpoint

Estrategias efectivas con breakpoints:

  • Antes del comando problemático: Establece el breakpoint en el comando inmediatamente anterior al que falla
  • En puntos de decisión: Coloca breakpoints donde el flujo del test puede tomar diferentes caminos
  • Después de esperas: Usa breakpoints tras comandos waitFor para verificar que la condición se cumplió

Ejecución paso a paso

La ejecución paso a paso te permite avanzar comando por comando, observando el efecto de cada acción en la página web. Esta técnica es fundamental para entender exactamente dónde y por qué falla un test. Estos comandos se encuentran haciendo click derecho sobre un comando.

Controles de ejecución paso a paso:

  • Play To Here: Ejecuta todos los comandos hasta alcanzar el actual
  • Play From Here: Ejecuta desde el comando seleccionado en adelante
  • Play This Step: Ejecuta únicamente este comando
  • Play From Start: Ejecuta los comandos desde el principio

Técnica de debugging paso a paso:

1. Establece un breakpoint antes del área problemática
2. Ejecuta el test hasta que se pause
3. Examina visualmente la página web
4. Usa "Play This Step" para ejecutar el siguiente comando
5. Observa los cambios en la página y los logs
6. Repite hasta identificar el comando problemático

Comando echo para mensajes de depuración

El comando **echo** permite insertar mensajes personalizados en los logs, proporcionando información contextual durante la ejecución. Es especialmente útil para rastrear el flujo de ejecución y verificar valores de variables.

Sintaxis del comando echo:

echo | Mensaje personalizado | 
echo | Estado actual: ${variable} |
echo | Punto de control: inicio de login |

Casos de uso prácticos del comando echo:

  • Marcadores de sección: Identifica diferentes partes de tu test
echo | === INICIO PROCESO DE LOGIN === |
type | id=username | admin
type | id=password | secret
echo | === CREDENCIALES INGRESADAS === |
click | id=submit
echo | === FORMULARIO ENVIADO === |
  • Verificación de variables: Confirma que las variables contienen los valores esperados
storeText | css=.order-number | orderNum
echo | Número de pedido capturado: ${orderNum} |
  • Puntos de control: Marca momentos clave en la ejecución
echo | Verificando existencia del elemento crítico |
assertElementPresent | id=critical-element
echo | Elemento crítico confirmado - continuando |

Interpretación de estados durante paso a paso

Durante la ejecución paso a paso, presta atención especial a:

Estados visuales de la página:

  • ¿Se muestran indicadores de carga?
  • ¿Están los elementos en el estado esperado (visible, habilitado)?
  • ¿Ha cambiado el contenido de la página como se esperaba?

Información en los logs:

  • Mensajes de error específicos
  • Tiempos de respuesta inusuales
  • Advertencias sobre elementos

Consistencia entre comandos:

  • ¿El resultado de un comando afecta al siguiente?
  • ¿Hay comandos que dependen de estados específicos?

Combinación de técnicas para debugging efectivo

La máxima efectividad se logra combinando estas herramientas:

  1. Inicia con logs para identificar el área problemática
  2. Coloca breakpoints estratégicamente alrededor del problema
  3. Usa echo para añadir contexto específico
  4. Ejecuta paso a paso en la zona crítica
  5. Analiza logs detalladamente en cada paso

Esta metodología sistemática te permite diagnosticar problemas complejos de manera organizada, reduciendo significativamente el tiempo necesario para identificar y resolver fallos en tus tests automatizados.

Aprendizajes de esta lección de Selenium

  • Identificar problemas comunes que causan fallos en Selenium IDE.
  • Aplicar técnicas de debugging como eliminación por descarte y simplificación de tests.
  • Utilizar herramientas integradas como logs, breakpoints y ejecución paso a paso para analizar la ejecución.
  • Verificar y actualizar localizadores y condiciones previas para asegurar la validez de los tests.
  • Implementar comandos de depuración como echo para mejorar la trazabilidad durante la ejecución.

Completa este curso de Selenium y certifícate

Únete a nuestra plataforma de cursos de programación y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración