WebBrowser-Steuerung und Bereitschaftszustand
-
05-07-2019 - |
Frage
Ich bin mit einem WebBrowser-Steuerelement auf einer Webseite einzuloggen.
WbBrowser.Navigate("http://www.foo.com/login.php")
Sobald die Seite geladen I anmelden, um den folgenden Code
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")
Das funktioniert gut. Nach erfolgreicher Anmeldung muss ich zu einer anderen Seite navigieren. Dies geschieht nur, wenn das Login korrekt ist. Die Frage ist hier als Sohn wie die Login-Seite der Readystate von WebBrowser-Steuerelement wird vollständig und auch die nächste Codezeile vor dem ich Login auf Website wird in einem Fehler ausgeführt und die Ergebnisse geladen wird, da ich nicht angemeldet bin.
WbBrowser.Navigate("http://www.foo.com/page2.php")
Wie kann ich meine Anwendung warten, bis die Anmeldung mache abgeschlossen sein und dann die obige Codezeile auszuführen. Irgendwelche Ideen?
Lösung
Versuchen Sie den Überblick über Ihren Anwendungszustand in einer Variablen halten, und das WebBrowser.DocumentCompleted Ereignis verwenden, zu testen, ob die Anmeldung übergeben.
Andere Tipps
Salvete! Ich antwortete nur einen ähnlichen Beitrag hier, genau dieses Verfahren ausführen zu können, nehmen Sie bitte einen Blick: Wie warten, bis WebBrowser ist vollständig geladen in VB.NET?