C#WebBrowser正文为空

时间:2017-09-04 16:06:30

标签: webbrowser-control

.Net Version 4.5.2

当加载返回302的页面时,浏览器控件会加载重定向的URL,大概是正确的。当您在Fiddler中检查调用结果时,将从服务器返回整个正确的页面。

现在,页面永远不会“完成”很长一段时间,但是会进入“互动”状态,在那里你应该可以与之交互,不是吗?

当我查看WebBrowser的非空文档时,它没有内容,因此您无法访问Body或任何元素。

结果被编码 - gzip。你必须在Fiddler解码才能看到它。

如何让返回的HTML在Document属性中可用?

using (browser = new WebBrowser()) {

    browser.ClientSize = new Size(800, 600);
    browser.ScrollBarsEnabled = false;
    browser.ScriptErrorsSuppressed = true;                    
    System.Windows.Forms.HtmlDocument doc = null;

    browser.Navigate(_url);
    // Wait for control to load page
    while (browser.ReadyState != WebBrowserReadyState.Complete)
    {
        Application.DoEvents();
        if (browser.ReadyState == WebBrowserReadyState.Interactive && browser.Document != null)
        {
            // give some redering time..
            Thread.CurrentThread.Join(500);
            Application.DoEvents();
            doc = browser.Document;
            break;
        }
    }
    var elements = browser.Document.GetElementsByTagName("INPUT");
    foreach (HtmlElement element in elements)
    {
        if (element.Name.ToLower().Contains("theInputFieldName"))
        {
            element.InnerText = NewFieldContentsVariable;
        }
        //to get the text use :  string value = element.GetAttribute("value");
       //to set the text use :  elemet.InnerText = "something";

    }
    ...

0 个答案:

没有答案