Tengo una aplicación web para probar con Selenium. Hay mucho JavaScript ejecutándose al cargar la página.
Este código JavaScript no está tan bien escrito, pero no puedo cambiar nada. Entonces, esperar a que aparezca un elemento en el DOM con el findElement()
método no es una opción.
Quiero crear una función genérica en Java para esperar a que se cargue una página, una posible solución sería:
- ejecute un script de JavaScript desde WebDriver y almacene el resultado de
document.body.innerHTML
en una variable de cadenabody
. - compare la
body
variable con la versión anterior debody
. si son iguales, configure el incremento de un contador; de lonotChangedCount
contrario, establezca el valornotChangedCount
cero. - espere un poco (50 ms por ejemplo).
- Si la página no ha cambiado durante algún tiempo (500 ms por ejemplo)
notChangedCount >= 10
, salga del bucle; de lo contrario, continúe con el primer paso.
¿Crees que es una solución válida?
findElement
espera a que un elemento esté disponible, pero a veces el elemento está disponible antes de que el código javascript se inicialice por completo, por eso no es una opción.