等待webbrowser完成加载

时间:2016-01-27 19:17:14

标签: c# html webbrowser-control

是的,这似乎是一个非常常见的问题并且相信我,我现在寻找解决方案已经有一段时间了。它是关于WinForms-WebBrowser的。

下面这个似乎不起作用,因为我加载的页面似乎一直在执行javascript,所以它永远不会完成(不知道我的假设是否正确,但它绝对是永远不会完成)。

browser.DocumentCompleted += (sender, e) =>
        {
            if (browser.ReadyState != WebBrowserReadyState.Complete)
                return;
            //browser is done loading
        };
        elementToClick.InvokeMember("click");

这种方法无论出于何种原因都不起作用,实际上不知道为什么。

browser.DocumentCompleted += (sender, e) =>
        {
            if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
                return;
            //browser is done loading
        };
        elementToClick.InvokeMember("click");

这应该最终作为一个函数,如PageLoad(),我在导航到不同的浏览器文档后调用。所以Application.Doevents()不是一个选项,因为我需要等到新文档加载后再继续。并且Thread.Sleep(x)都不是,因为它需要在完成时恢复代码(速度在这里很重要)。在while循环中的Thread.Sleep(x)将完全阻止我的浏览器加载。

有什么不同的方法吗? 如果缺少相关信息,请告知我们。

0 个答案:

没有答案