Контроль WebBrowser и состояние готовности - PullRequest
0 голосов
/ 10 сентября 2009

Я использую элемент управления веб-браузера для входа на сайт.

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

Это отлично работает. При успешном входе в систему я должен перейти на другую страницу. Это произойдет, только если логин правильный. Проблема заключается в том, что при загрузке страницы входа в систему состояние готовности веб-браузера становится завершенным, и даже до того, как я войду на веб-сайт, будет выполнена следующая строка кода, что приведет к ошибке, поскольку я не вошел в систему.

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

Как я могу заставить мое приложение дождаться завершения входа в систему, а затем выполнить приведенную выше строку кода. Есть идеи?

Ответы [ 2 ]

1 голос
/ 17 сентября 2009

Попробуйте отслеживать состояние вашего приложения в переменной и используйте событие webbrowser.DocumentCompleted, чтобы проверить, прошел ли вход в систему.

0 голосов
/ 09 февраля 2012

Salvete! Я только что ответил на аналогичный пост здесь, чтобы выполнить эту точную процедуру, пожалуйста, посмотрите: Как дождаться полной загрузки WebBrowser в VB.NET?

...