Manejo de timing y esperas

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

Comandos waitFor y su importancia

En las aplicaciones web modernas, los elementos no siempre aparecen instantáneamente cuando cargamos una página. Las páginas dinámicas utilizan JavaScript, llamadas AJAX y contenido que se carga de forma asíncrona, lo que significa que un elemento puede tardar unos segundos en estar disponible para nuestros tests.

Aquí es donde entran en juego los comandos waitFor de Selenium IDE. Estos comandos permiten que nuestros tests esperen pacientemente hasta que se cumplan ciertas condiciones antes de continuar con el siguiente paso.

¿Por qué necesitamos comandos de espera?

Imagina que estás probando un formulario de registro que, después de enviar los datos, muestra un mensaje de confirmación. Si tu test intenta verificar ese mensaje inmediatamente después de hacer clic en "Enviar", es posible que el mensaje aún no haya aparecido y el test falle.

Los escenarios más comunes que requieren esperas incluyen:

  • Elementos que se cargan dinámicamente mediante JavaScript
  • Mensajes de confirmación que aparecen tras completar acciones
  • Contenido AJAX que se actualiza sin recargar la página completa
  • Transiciones y animaciones que modifican la visibilidad de elementos
  • Formularios multipaso donde cada sección aparece progresivamente

Comandos waitFor principales

Selenium IDE incluye varios comandos de espera específicos para diferentes situaciones:

waitForElementPresent

Este comando espera hasta que un elemento esté presente en el DOM de la página, aunque no necesariamente sea visible para el usuario.

Command: waitForElementPresent
Target: id=mensaje-confirmacion
Value: (vacío)

Es útil cuando sabemos que un elemento se va a crear dinámicamente, pero no nos importa si está visible o no.

waitForElementVisible

Este comando es más específico: espera hasta que un elemento no solo esté presente, sino que también sea visible para el usuario.

Command: waitForElementVisible
Target: css=.notification-success
Value: (vacío)

Es ideal para elementos que pueden existir en el DOM pero estar ocultos inicialmente, como mensajes que aparecen con animaciones.

waitForText

Este comando espera hasta que un elemento contenga un texto específico. Es especialmente útil para validar que se ha mostrado un mensaje concreto.

Command: waitForText
Target: id=status-message
Value: Registro completado exitosamente

Ejemplo práctico de uso

Consideremos un formulario de contacto típico. Después de enviar el formulario, aparece un mensaje de confirmación que tarda unos segundos en mostrarse:

Command: click
Target: id=submit-button
Value: (vacío)

Command: waitForElementVisible
Target: id=success-message
Value: (vacío)

Command: verifyText
Target: id=success-message
Value: Su mensaje ha sido enviado correctamente

En este ejemplo:

  1. Hacemos clic en el botón de envío
  2. Esperamos hasta que el mensaje de éxito sea visible
  3. Verificamos que el texto del mensaje es el esperado

Sin el comando waitForElementVisible, el test podría fallar porque intentaría verificar el texto antes de que el elemento apareciera en pantalla.

Diferencias clave entre los comandos

  • waitForElementPresent: Solo verifica que el elemento exista en el código HTML
  • waitForElementVisible: Verifica que el elemento exista Y sea visible al usuario
  • waitForText: Verifica que el elemento contenga un texto específico

La elección del comando depende de lo que realmente necesites validar en tu test. En la mayoría de casos, waitForElementVisible es la opción más robusta porque garantiza que el usuario podría ver el elemento.

Integración con validaciones

Los comandos waitFor funcionan perfectamente como paso previo a las validaciones que ya conocemos. Una práctica común es combinarlos:

Command: waitForElementVisible
Target: css=.error-message
Value: (vacío)

Command: assertText
Target: css=.error-message
Value: Por favor, complete todos los campos obligatorios

Esta combinación asegura que primero esperamos a que aparezca el mensaje de error, y luego validamos su contenido específico.

Los comandos waitFor son fundamentales para crear tests estables y confiables que funcionen consistentemente, independientemente de la velocidad de carga de la aplicación o las condiciones de la red.

Configuración de timeouts y velocidad

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

Configuración de tiempos

Además de los comandos waitFor específicos, Selenium IDE permite configurar el comportamiento global de esperas entre comandos. Estas configuraciones se encuentran en el panel lateral izquierdo, en la pestaña CONFIG, en la sección Project. Son:

  • Step Timeout: Tiempo máximo en millisegundos que Selenium IDE esperará a que termine un comando. Si sobrepasa este tiempo, se considerará que el comando a fallado. Suele recomendarse un valor de 30 segundos para aplicaciones convencionales.
  • Step Delay: Tiempo en milisegundos que Selenium IDE esperará entre comando y comando. Al terminar cada comando, se esperará este tiempo antes de continuar con el siguiente. Esto es útil tanto para depuración como para adaptarse a aplicaciones que necesitan más tiempo entre acciones.

El comando pause para esperas específicas

Aunque los comandos waitFor son más inteligentes, a veces necesitamos esperas fijas de duración específica. Para estos casos, Selenium IDE incluye el comando pause.

Command: pause
Target: (vacío)
Value: 3000

El valor se especifica en milisegundos, por lo que 3000 equivale a 3 segundos de espera.

Cuándo usar pause

El comando pause debe usarse con moderación y solo en situaciones específicas:

  • Después de animaciones largas que no tienen un elemento final que detectar
Command: click
Target: id=animate-button
Value: (vacío)

Command: pause
Target: (vacío)
Value: 2000
  • Para simular el comportamiento humano en formularios sensibles
Command: type
Target: id=username
Value: usuario@ejemplo.com

Command: pause
Target: (vacío)
Value: 500

Command: type
Target: id=password
Value: mipassword123
  • Entre acciones que generan procesamiento del servidor sin indicadores visuales claros

Configuración por comando individual

Algunos comandos permiten especificar un timeout específico que sobrescribe la configuración global. Esto se hace utilizando el campo "Value" en ciertos comandos waitFor:

Command: waitForElementVisible
Target: id=slow-loading-element
Value: 60000

En este ejemplo, esperamos hasta 60 segundos (60000 milisegundos) para que aparezca un elemento específico, independientemente del timeout global configurado.

Estrategias para diferentes entornos

Cuando tus tests se ejecutan en múltiples entornos, es recomendable:

  • Configurar timeouts conservadores para el entorno más lento
  • Usar variables de entorno si planeas exportar tests a código más adelante
  • Documentar las configuraciones específicas necesarias para cada entorno

Mejores prácticas de timing

  • Prefiere waitFor sobre pause: Los comandos waitFor son más eficientes porque no esperan tiempo fijo innecesario
  • Ajusta la velocidad según el propósito: Usa un Step Delay alto para demostraciones y bajo para ejecución automatizada
  • Configura timeouts realistas: Muy cortos causan fallos innecesarios, muy largos enmascaran problemas reales
  • Usa pause solo cuando sea imprescindible: Las esperas fijas hacen los tests más lentos y menos confiables

La combinación adecuada de estas configuraciones permite que tus tests sean robustos en diferentes condiciones, manteniendo un equilibrio entre velocidad de ejecución y confiabilidad de resultados.

Aprendizajes de esta lección de Selenium

  • Comprender la importancia de los comandos waitFor en pruebas de aplicaciones web dinámicas.
  • Diferenciar entre los comandos waitForElementPresent, waitForElementVisible y waitForText.
  • Configurar timeouts globales y controlar la espera entre pasos en Selenium IDE.
  • Aplicar el comando pause adecuadamente para esperas fijas y entender sus limitaciones.
  • Implementar buenas prácticas para optimizar la estabilidad y velocidad de los tests automatizados.

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