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 返回空?的主要内容,如果未能解决你的问题,请参考以下文章
delphi webbrowser,如何调整webbrowser里面打开网页的大小,或者使打开的内容适应webbrowser控件的大小。