为什么WebBrowser.导航返回空HttpDocument

本文关键字:HttpDocument 返回 导航 WebBrowser 为什么 | 更新日期: 2023-09-27 18:09:27

我试过了:

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阻塞)

为什么WebBrowser.导航返回空HttpDocument

因为下载html需要时间。没有人想要等待的时间,特别是用户界面线程,沙漏现在不会做了。

它显式地告诉您何时可用。documentcomplete事件事件。

你必须抽吸一个消息循环来获得那个事件。

因为Navigate是异步的,当你读取Document属性的值时,导航甚至还没有开始

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

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