是的,这似乎是一个非常常见的问题并且相信我,我现在寻找解决方案已经有一段时间了。它是关于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)将完全阻止我的浏览器加载。
有什么不同的方法吗? 如果缺少相关信息,请告知我们。