Salvete! Necesitaba, simplemente, una función que podía llamar para que el código esperara a que la página se cargara antes de continuar. Después de buscar en la web respuestas y juguetear durante varias horas, se me ocurrió esto para resolver por mí mismo el dilema exacto que presentas. Sé que llego tarde al juego con una respuesta, pero deseo publicar esto para cualquier otra persona que aparezca.
uso: a llamarlo WaitForPageLoad() justo después de una llamada a la navegación
whatbrowser.Navigate("http://www.google.com")
WaitForPageLoad()
otro ejemplo no combinamos la función de navegar con la carga de la página, ya que a veces hay que esperar para una carga sin navegar también, por ejemplo, es posible que tenga que esperar que se cargue una página que se inició con un evento invokemember
whatbrowser.Document.GetElementById("UserName").InnerText = whatusername
whatbrowser.Document.GetElementById("Password").InnerText = whatpassword
whatbrowser.Document.GetElementById("LoginButton").InvokeMember("click")
WaitForPageLoad()
Aquí está el código: Necesita dos subs más la variable accesible, pageready
. En primer lugar, asegúrese de fijar la variable llamada whatbrowser
ser su control WebBrowser
Ahora, en algún lugar de su módulo o clase, colocar esto:
Private Property pageready As Boolean = False
#Region "Page Loading Functions"
Private Sub WaitForPageLoad()
AddHandler whatbrowser.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
While Not pageready
Application.DoEvents()
End While
pageready = False
End Sub
Private Sub PageWaiter(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
If whatbrowser.ReadyState = WebBrowserReadyState.Complete Then
pageready = True
RemoveHandler whatbrowser.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
End If
End Sub
#End Region
Quiero saber eso también. ReadyState a menudo llega a 4 en el medio de la carga. Solo necesitamos saber cuándo está completo. Eso es todo. –
@shubham si todavía tiene problemas con esto, hágamelo saber, ya que he desarrollado técnicas para resolver este problema a lo largo de los años, métodos que no se conocen y que no se han publicado.Este problema es el más importante y más difícil con todo el control WebBrowser. Lea algunos de mis mensajes recientes sobre el control del navegador web (he realizado muchos en los últimos días) y especialmente la publicación sobre las limitaciones del control de WB, que se encuentra en mi próximo comentario. Básicamente, he resuelto todos los problemas, si aún necesitas ayuda (ya que tu publicación es anterior) avísame y te puedo ayudar. –
Mi explicación de las limitaciones del control de WB, encuentre mi respuesta aquí: http://stackoverflow.com/questions/1495944/webbrowser-control-limitations/9245591#9245591 –