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?

¿Fue útil?

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?

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