Controlare e estado de prontidão
-
05-07-2019 - |
Pergunta
Eu estou usando um controle webbrowser para acessar um site.
WbBrowser.Navigate("http://www.foo.com/login.php")
Uma vez que a página é carregada I login usando o seguinte 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")
Isso funciona bem. No login bem-sucedido eu tenho que navegar para outra página. Isso só acontecerá se o login está correto. A questão aqui é como filho como a página de login é carregado o readystate de controle webbrowser torna-se completa e até mesmo antes do login eu para o site da próxima linha de código é executado e resulta em um erro como eu não estou logado.
WbBrowser.Navigate("http://www.foo.com/page2.php")
Como posso fazer minha espera aplicativo para o login ser completa e, em seguida, executar a linha de código acima. Alguma idéia?
Solução
Tente manter o controle de seu estado de aplicação em uma variável e usar o evento WebBrowser.DocumentCompleted para testar se o login passado.
Outras dicas
Salvete! Eu só respondeu um post semelhante aqui, para realizar esse procedimento exato, por favor, dê uma olhada: Como esperar até WebBrowser é completamente carregado em VB.NET?