WebBrowser document.body.InnerHtml 返回空?

Posted

技术标签:

【中文标题】WebBrowser document.body.InnerHtml 返回空?【英文标题】:WebBrowser document.body.InnerHtml returns empty? 【发布时间】:2014-04-02 20:42:24 【问题描述】:

有一个页面,我想获取它的主体来读取输入区域,并通过 C# 中的 GetAttribute 和 SetAttribute 更改它们的值。这样做没问题,但是,

当我通过以下方式调用正文时,没有任何返回(我的意思是空字符串):

webBrowser1.Document.Body.InnerText 

或者,

webBrowser1.Document.Body.Innerhtml

这就是我无法访问任何输入字段的原因。 我在 webbrowser 组件中看到了网页,但是 InnerText 和 InnerHtml 都没有返回。这是一个在本地运行的已保存的银行网页。

那么我如何阅读正文,以运行 SetAttribute 或 GetAttribute 或 InvokeMember 其他东西?

【问题讨论】:

您是否要等到页面完全加载? ***.com/questions/20957182/… 什么时候调用 webBrowser1.Document.Body.InnerText。在 webbrowser 控件中加载页面后立即? 是的,完全加载。我不知道,但问题解决了。也许我错过了什么。我只得到框架标签。然后我尝试通过代码访问每个帧: webBrowser1.Document.Window.Frames[i].Document.Body.InnerHtml 这有效 【参考方案1】:

您需要获取输入元素然后获取或设置文本:

HtmlElementCollection elements = currentBrowser.Document.GetElementsByTagName("INPUT");
     foreach (HtmlElement element in elements)
        
           //to get the text use :  string value = element.GetAttribute("value");
           //to set the text use :  elemet.InnerText = "something";

        

但不要忘记,通过上面的代码,您可以获得所有输入元素,要搜索特定元素,您可以在网页中检查其 id 或名称:例如:

 if (element.Name.ToLower().Contains("email"))
         //do work

【讨论】:

@AliCAKIL,出于好奇,这个答案是如何解决你的问题的?

以上是关于WebBrowser document.body.InnerHtml 返回空?的主要内容,如果未能解决你的问题,请参考以下文章

vb的webbrowser控件问题

跪求WebBrowser的资料~~

delphi webbrowser,如何调整webbrowser里面打开网页的大小,或者使打开的内容适应webbrowser控件的大小。

将 json 转换为 C# 数组?

$(document.body) 和 $('body') 之间的区别

document.documentElement和document.body区别介绍