Control webBrowser y estado listo.
-
05-07-2019 - |
Pregunta
Estoy utilizando un control de navegador web para iniciar sesión en un sitio web.
WbBrowser.Navigate("http://www.foo.com/login.php")
Una vez que se haya cargado la página, inicie sesión con el siguiente código
While WbBrowser.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
End While
WbBrowser.Document.GetElementById("user_login").SetAttribute("Value", "username")
WbBrowser.Document.GetElementById("user_pass").SetAttribute("Value", "password")
WbBrowser.Document.Forms("loginform").InvokeMember("submit")
Esto funciona bien. Para iniciar sesión correctamente, tengo que navegar a otra página. Esto sucederá solo si el inicio de sesión es correcto. El problema aquí es tan importante como se carga la página de inicio de sesión, el estado del control del navegador web se completa y, incluso antes de que inicie sesión en el sitio web, se ejecuta la siguiente línea de código y se produce un error porque no estoy conectado.
WbBrowser.Navigate("http://www.foo.com/page2.php")
¿Cómo puedo hacer que mi aplicación espere a que se complete el inicio de sesión y luego ejecutar la línea de código anterior? ¿Alguna idea?
Solución
Intente hacer un seguimiento del estado de su aplicación en una variable, y use el evento webbrowser.DocumentCompleted para comprobar si se aprobó el inicio de sesión.
Otros consejos
Salvete! Acabo de responder una publicación similar aquí, para realizar este procedimiento exacto, eche un vistazo: Cómo esperar hasta que WebBrowser esté completamente cargado en VB.NET?