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 PlusManejo de alertas, confirmaciones y prompts
Las aplicaciones web modernas utilizan frecuentemente alertas JavaScript para mostrar mensajes importantes, solicitar confirmaciones o recopilar información del usuario. Estos elementos requieren un manejo especial en nuestros tests, ya que no son elementos HTML tradicionales sino ventanas del navegador que bloquean la interacción hasta ser atendidas.
Selenium IDE incluye comandos específicos para gestionar estos tres tipos de diálogos JavaScript: alertas simples, confirmaciones con botones OK/Cancelar, y prompts que solicitan entrada de texto. La clave está en preparar las respuestas antes de que aparezcan estos diálogos.
Manejo de alertas simples
Las alertas simples muestran un mensaje con un único botón "OK". Para verificar su contenido utilizamos el comando assertAlert
:
Command: assertAlert
Target: El mensaje esperado
Value: (vacío)
Este comando verifica que aparezca una alerta con el texto especificado y automáticamente la acepta. Si el texto no coincide exactamente, el test fallará. Es importante recordar que assertAlert
debe ejecutarse después de la acción que genera la alerta:
Command: click
Target: id=mostrar-alerta
Value:
Command: assertAlert
Target: Operación completada correctamente
Value:
Gestión de confirmaciones
Las confirmaciones presentan dos opciones: "OK" y "Cancelar". Debemos indicar previamente qué botón queremos pulsar usando chooseOkOnNextConfirmation
o chooseCancelOnNextConfirmation
:
Para aceptar la confirmación:
Command: chooseOkOnNextConfirmation
Target:
Value:
Command: click
Target: id=eliminar-elemento
Value:
Command: assertConfirmation
Target: ¿Está seguro de eliminar este elemento?
Value:
Para cancelar la confirmación:
Command: chooseCancelOnNextConfirmation
Target:
Value:
Command: click
Target: id=eliminar-elemento
Value:
Command: assertConfirmation
Target: ¿Está seguro de eliminar este elemento?
Value:
El comando assertConfirmation
verifica el mensaje y confirma que se gestionó correctamente según la elección previa.
Respuesta a prompts
Los prompts solicitan al usuario introducir texto. Utilizamos answerOnNextPrompt
para proporcionar la respuesta antes de que aparezca:
Command: answerOnNextPrompt
Target: Juan Pérez
Value:
Command: click
Target: id=solicitar-nombre
Value:
Command: assertPrompt
Target: Introduzca su nombre completo:
Value:
Si queremos cancelar el prompt sin introducir texto, usamos chooseCancelOnNextPrompt
:
Command: chooseCancelOnNextPrompt
Target:
Value:
Command: click
Target: id=solicitar-nombre
Value:
Command: assertPrompt
Target: Introduzca su nombre completo:
Value:
Captura de respuestas de diálogos
Podemos almacenar las respuestas de confirmaciones y prompts en variables para usarlas posteriormente:
Command: storeConfirmation
Target: respuesta_confirmacion
Value:
Command: storePrompt
Target: texto_introducido
Value:
Estas variables contendrán true
o false
para confirmaciones, y el texto introducido para prompts.
Consideraciones importantes
Los comandos de preparación (chooseOkOnNextConfirmation
, answerOnNextPrompt
) deben ejecutarse inmediatamente antes de la acción que genera el diálogo. Si colocamos otros comandos entre medias, la preparación puede perderse.
Selenium IDE maneja automáticamente el timing de estos diálogos, por lo que no necesitamos comandos de espera adicionales. Sin embargo, debemos asegurar que nuestros localizadores sean precisos para que la acción que genera el diálogo se ejecute correctamente.
Cuando trabajemos con alertas dinámicas cuyo mensaje puede variar, podemos usar variables en los comandos de verificación:
Command: storeText
Target: id=mensaje-dinamico
Value: mensaje_esperado
Command: click
Target: id=mostrar-alerta-dinamica
Value:
Command: assertAlert
Target: ${mensaje_esperado}
Value:
Esta aproximación nos permite crear tests más flexibles y mantenibles que se adapten a contenido dinámico en las alertas.
Cambio entre ventanas y pestañas
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
Muchas aplicaciones web abren enlaces en nuevas pestañas o crean ventanas emergentes para mostrar información adicional, formularios de ayuda o procesos de pago. Selenium IDE proporciona comandos específicos para navegar entre estas ventanas y continuar nuestros tests sin interrupciones.
El manejo de múltiples ventanas requiere entender que cada pestaña o ventana tiene un identificador único que Selenium asigna automáticamente. Podemos cambiar el foco entre estas ventanas para interactuar con los elementos de cada una.
Comando selectWindow
El comando principal para cambiar entre ventanas es selectWindow
, que permite especificar a qué ventana queremos dirigir nuestras próximas acciones:
Command: selectWindow
Target: handle=ventana_destino
Value:
Selenium IDE identifica las ventanas de varias formas:
handle=0
: La ventana original (primera pestaña)handle=1
: La segunda ventana abiertahandle=2
: La tercera ventana abierta, y así sucesivamente
Escenario práctico: enlace en nueva pestaña
Supongamos que tenemos un enlace que abre una página de ayuda en una nueva pestaña:
Command: click
Target: id=enlace-ayuda
Value:
Command: selectWindow
Target: handle=1
Value:
Command: assertTitle
Target: Centro de Ayuda
Value:
Command: click
Target: id=cerrar-ayuda
Value:
Command: selectWindow
Target: handle=0
Value:
En este ejemplo, hacemos clic en el enlace de ayuda, cambiamos a la nueva pestaña (handle=1), verificamos que estamos en la página correcta, cerramos la ayuda y regresamos a la ventana original (handle=0).
Almacenar identificadores de ventana
Para mayor flexibilidad, podemos almacenar los identificadores de ventana en variables:
Command: storeWindowHandle
Target: ventana_principal
Value:
Command: click
Target: id=abrir-popup
Value:
Command: selectWindow
Target: handle=1
Value:
Command: storeWindowHandle
Target: ventana_popup
Value:
Posteriormente podemos usar estas variables para cambiar entre ventanas:
Command: selectWindow
Target: handle=${ventana_popup}
Value:
Command: type
Target: id=formulario-popup
Value: Datos del formulario
Command: selectWindow
Target: handle=${ventana_principal}
Value:
Verificación de ventanas abiertas
Es útil verificar cuántas ventanas están abiertas antes de intentar cambiar entre ellas:
Command: assertWindowCount
Target: 2
Value:
Este comando confirma que tenemos exactamente dos ventanas abiertas, evitando errores si esperamos una ventana que no se abrió correctamente.
Manejo de ventanas emergentes
Las ventanas emergentes (popups) requieren el mismo tratamiento que las pestañas nuevas:
Command: click
Target: id=abrir-calculadora
Value:
Command: selectWindow
Target: handle=1
Value:
Command: click
Target: id=numero-5
Value:
Command: click
Target: id=operacion-suma
Value:
Command: click
Target: id=numero-3
Value:
Command: click
Target: id=calcular
Value:
Command: assertText
Target: id=resultado
Value: 8
Command: close
Target:
Value:
Command: selectWindow
Target: handle=0
Value:
El comando close
cierra la ventana actual, y luego regresamos a la ventana principal.
Gestión automática de ventanas
Selenium IDE maneja automáticamente muchas situaciones comunes:
- Detección automática de nuevas ventanas cuando se abren
- Asignación de identificadores secuenciales (0, 1, 2...)
- Limpieza automática de ventanas cerradas
Sin embargo, debemos ser explícitos sobre qué ventana queremos usar en cada momento del test.
Estrategias para tests robustos
Para crear tests mantenibles con múltiples ventanas:
- Almacena siempre el identificador de la ventana principal al inicio
- Verifica el título o un elemento único después de cambiar de ventana
- Cierra las ventanas que abras durante el test para evitar acumulación
- Regresa siempre a la ventana principal al final de cada secuencia
Command: storeWindowHandle
Target: ventana_principal
Value:
Command: click
Target: id=enlace-externo
Value:
Command: selectWindow
Target: handle=1
Value:
Command: assertTitle
Target: Página Externa
Value:
Command: verifyElementPresent
Target: id=contenido-esperado
Value:
Command: close
Target:
Value:
Command: selectWindow
Target: handle=${ventana_principal}
Value:
Command: verifyTitle
Target: Página Principal
Value:
Esta aproximación garantiza que nuestro test sea predecible y confiable, independientemente de cómo se comporten las ventanas emergentes o los enlaces externos.
Aprendizajes de esta lección de Selenium
- Comprender cómo gestionar alertas simples, confirmaciones y prompts en Selenium IDE.
- Aprender a preparar respuestas y verificar mensajes en diálogos JavaScript.
- Saber cambiar entre ventanas y pestañas usando identificadores y comandos específicos.
- Conocer cómo almacenar y reutilizar identificadores de ventanas para tests flexibles.
- Aplicar buenas prácticas para crear tests robustos con múltiples ventanas y diálogos.
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