Pregunta

Estoy tratando de escribir una prueba de Selenium para una página web que utiliza un evento onbeforeunload para avisar al usuario antes de irse. Parece que Selenium no reconoce el cuadro de diálogo de confirmación que aparece o no proporciona una forma de presionar Aceptar o Cancelar. ¿Hay alguna forma de hacer esto? Estoy usando el controlador Java Selenium, si es relevante.

¿Fue útil?

Solución

Puede escribir una extensión de usuario (o solo un poco de JavaScript en storeEval, etc.) que pruebe que se establece window.onbeforeunload y luego lo reemplaza por nulo antes de continuar desde la página. Feo, pero debería sacarte de la página.

Otros consejos

Acabo de hacer esto para una aplicación mía en la que el controlador onbeforeunload muestra un mensaje si un usuario abandona una página mientras un documento está en estado no guardado. Código de Python:

driver.switch_to.alert.accept()

El equivalente de Java sería:

driver.switchTo().alert().accept();

Si la alerta no existe, el código anterior fallará con una NoAlertPresentException , por lo que no es necesario realizar una prueba por separado para verificar la existencia antes de aceptar la solicitud.

Estoy ejecutando Selenium 2.43.0 pero creo que esto ha sido posible por un tiempo ahora.

En los casos en que no quiero que aparezca el mensaje porque no es lo que estoy probando, ejecuto JavaScript personalizado en el navegador para configurar window.onbeforeunload en nulo antes de salir de la página. Puse esto en el código de desmontaje de prueba.

Advertencia: esto proporciona una solución alternativa

Watij - http://watij.com/ - puede ayudar aquí. O si se siente cómodo con Ruby, Watir puede ayudarlo: http://wtr.rubyforge.org/ install.html

Cuando me enfrenté a un control limitado que tenía sobre el navegador usando Selenium, recurrí a MozLab plugin que resolvió mi problema aunque solo fuera para una plataforma de navegador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top