WebBrowser控制和就绪状态

时间:2009-09-10 18:02:52

标签: .net vb.net webbrowser-control

我正在使用webbrowser控件登录网站。

WbBrowser.Navigate("http://www.foo.com/login.php")

加载页面后,我使用以下代码登录

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")

这很好用。成功登录后,我必须导航到另一个页面。仅当登录正确时才会发生这种情况。这里的问题是儿子,因为加载了登录页面,webbrowser控件的readystate变得完整,甚至在我登录网站之前,下一行代码被执行并导致错误,因为我没有登录。

WbBrowser.Navigate("http://www.foo.com/page2.php")

如何让我的应用程序等待登录完成,然后执行上面的代码行。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

尝试在变量中跟踪应用程序状态,并使用webbrowser.DocumentCompleted事件来测试是否已通过登录。

答案 1 :(得分:0)

Salvete!我刚刚在这里回答了类似的帖子,为了执行这个确切的程序,请看一下: How to wait until WebBrowser is completely loaded in VB.NET?