Manejo de alertas y ventanas

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

Manejo 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.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

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 abierta
  • handle=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

⭐⭐⭐⭐⭐
4.9/5 valoración