C#使WebBrowser等到页面加载

时间:2014-12-30 17:56:02

标签: c# loops

我正在尝试让我的Web浏览器等到页面完全加载,然后继续下一步。在#39; ve研究如何做到这一点,然而,我的代码在页面加载之前一直运行。

private void AdobeConnect_Load(object sender, EventArgs e)
    {
        for (int x = 1; x <= 3; x++)
        {
            while (acBrwsr.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }
            adobeStepper(x);
        }
    }

1 个答案:

答案 0 :(得分:1)

问题是你依赖的是ReadyState,你不应该这样做。在WebBrowser.DocumentComplete中,您需要检查e.Url == WebBrowser.Url,然后检查就绪状态。当你有框架并且与ReadyState混淆时,DocumentComplete会多次触发表格。

我对使用WebBrowser的机器人做的是当我有实际页面的文档完成状态时激活计时器然后抓住队列中的下一个项目来处理该页面,如完成后1秒。 (当然总是在OnTick事件中关闭计时器。)

我编写了一个队列,将一组任务分组在一起,我可以优先处理并删除任何项目,例如列表,这样我就不会重复任务,只会在DocumentCompleted e.url == webBrowser.url和我的ReadyState完成时执行