¿Hay una manera de detectar errores que ocurren en el DOM
en Selenium
y, probablemente, de la bandera de la misma como un error en la página?
Para dar un breve ejemplo, digamos que estoy tratando de vincular un evento en un control HTML no existente, mi navegador arroja un error que dice:
element abcd not found in the console.
Ahora, si quiero que el mismo error falle en mis pruebas de selenio y el mensaje que se muestra en el navegador se muestra como el mensaje de error.
¿Es posible hacer algo como esto?
selenium
selenium-rc
Baz1nga
fuente
fuente
Respuestas:
Coloque este script en su página y luego verifique en Selenium el JSError:
fuente
document.body.setAttribute("JSError", msg)
lugar de depender de jQueryEstoy haciendo esto para capturar errores de JavaScript:
fuente
No estoy seguro de cuándo cambió esto, pero ahora mismo funciona para mí en Python. El archivo es una página simple con un error de JavaScript.
Python-Selenium versión 2.48.0 Linux Firefox 43.0
fuente
driver.log("browser").then(function(results){ console.log(results.value); }
Aquí está la solución python webdriver que utilizo:
fuente
JSErrorCollector hace el trabajo.
Una vez configurado, es cuestión de:
fuente
window.onerror
Solución no basada (no probé): http://sejq.blogspot.com/2008/12/can-selenium-detect-if-page-has.htmlfuente
Me gustaría repetir la respuesta de jhanifen. Aquí hay una solución de JavaScript que no depende de jQuery. Crea una lista HTML invisible en la parte inferior de la página, que contiene los errores.
fuente
La solución con "window.onerror" no funcionó para mí.
Entonces, me gustaría señalar otra solución con la modificación de user-extensions.js que me ayudó:
¿Puede Selenium detectar si la página tiene errores de JavaScript?
Ventaja principal: no es necesario cambiar la fuente de la página para realizar la verificación.
Y aquí se explica cómo usar user-extensions.js:
Uso de User-Extensions con Selenium-IDE
Nota: esta solución solo funciona con Firefox
fuente
Aquí mi solución inspirada por la respuesta de jhanifen:
fuente
Si está usando java, puede probar esta biblioteca creada por mí que permite recopilar fácilmente los errores JS recibidos en la sesión de Chromedriver, utilizando anotaciones en los métodos de prueba. Funciona en JUnit5 con anotación extendida y en TestNG con un oyente que analiza la anotación. La anotación contiene valores booleanos que le permiten decidir si desea afirmar o registrar los errores encontrados después de la ejecución de la prueba.
Ejemplo de JUnit5:
fuente
Utilizo lo siguiente
TestCase.tearDown()
en mis pruebas de Python Selenium que hace que la prueba falle en caso de errores de JavaScript:Esto está inspirado en las respuestas de @kleptog y @ d3ming.
fuente
Intente incluir el evento windows.onerror en su página o habilite el cuadro de diálogo mostrar error en las opciones de IE. Si elige el más tarde en Se1 se bloqueará. PD: Esto se ha discutido aquí. Haz una búsqueda.
fuente