为什么WebBrowser.Navigate返回null HttpDocument?

时间:2011-09-24 00:18:00

标签: c#

我试过了:

var browser1 = new WebBrowser();
browser1.Navigate("https://zikiti.co.il/");    
HtmlDocument document = browser1.Document;

browser.Document为空。

为什么?


我做错了什么?

    public static void FillForm()
    {
        browser1 = new WebBrowser();
        browser1.Navigate(new Uri("https://zikiti.co.il/"));

        browser1.Navigated += webBrowser1_Navigated;
        Thread.CurrentThread.Join();
    }

    private static void webBrowser1_Navigated(object sender,
WebBrowserNavigatedEventArgs e)
    {
        HtmlDocument document = browser1.Document;
        System.Console.WriteLine();
    }

申请被卡住了。 顺便说一句,有没有更简单的方法来填写和提交此表格? (我无法在Fiddler中看到请求标头,因为页面始终被JS阻止。)

2 个答案:

答案 0 :(得分:4)

因为下载html需要时间。没有人愿意等待的时间,尤其是用户界面线程,沙漏将不会在这些日子里完成。

当它可用时,它会立即告诉您 。 DocumentCompleted事件。

你必须抽取一个消息循环才能获得该事件。

答案 1 :(得分:1)

因为Navigate是异步的,并且在您阅读Document属性的值时,导航甚至尚未开始。

如果您查看该页面上的示例,您将看到要阅读订阅Navigated事件所需的“当前”URL;同样适用于阅读Document。此事件的文档说明:

  

处理Navigated事件以在WebBrowser时接收通知   控件已导航到新文档。当Navigated事件   发生时,新文档已开始加载,这意味着您可以访问   通过Document,DocumentText和。加载的内容   DocumentStream属性。