0

我将 WebBrowser 控件用于我的 C# 项目。我尝试集成 GeckoFX 而不是 WebBrowser。因为我总是在 WebBrowser 中更改输入,所以我必须等到网站完全加载。这就是为什么,我使用以下方法:

   private void navigateBrowser(string URL)
        {
            wb.Navigate(URL);
            while (wb.ReadyState != WebBrowserReadyState.Complete)
            {
                Thread.Sleep(1);
                Application.DoEvents();
            }
        }

我已经为 GeckoFX 更改了这个方法,如下所示:private void navigateBrowser(string URL)

private void navigateBrowser(string URL)
        {
            wb.Navigate(URL);

  while (wb.Document.ReadyState != "complete")
            {
                Application.DoEvents();
            }
            while (wb.IsBusy)
            {
                Application.DoEvents();
            }
}

我打电话给 navigateBrowser(" http://facebook.com ") 然后填写表格进行登录。提交表单后,我必须登录另一个网站(在linkedin.com)我再次调用navigateBrowser(“ http://linkedin.com ”),当尝试从geckowebbrowser调用某些元素时,我得到错误“你调用的对象是空的。”。我检查了 geckowebbrowser 的实际 URL,它仍然是 facebook.com,但我应该是linkedin.com,因为我调用了linkedin.com。

可能是什么问题?我该如何解决这个问题?

4

1 回答 1

1

使用 webbrowser 的 DocumentCompleted 事件。

因此,例如 - 您的应用程序中有一个按钮可以导航到特定的网页,并且还有一个方法可以在加载后读取该页面。

因此,在 DocumentCompleted 事件处理程序中,调用该方法 - 这将确保页面已加载。

Application.DoEvents() 循环不是等待页面加载的好主意。例如,如果在你的循环过程中有什么东西关闭/崩溃了应用程序,它仍然会运行并且不会关闭。

问候

于 2015-05-27T13:16:01.260 回答