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 PlusComandos 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:
- Hacemos clic en el botón de envío
- Esperamos hasta que el mensaje de éxito sea visible
- 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.
Más de 25.000 desarrolladores ya confían en CertiDevs
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