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

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

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

webBrowser1.Document.Body.InnerText 

或者,

webBrowser1.Document.Body.InnerHtml

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

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

【问题讨论】:

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

标签: c# html webbrowser-control innerhtml innertext


【解决方案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,出于好奇,这个答案是如何解决你的问题的?
猜你喜欢
  • 2017-03-04
  • 2017-08-05
  • 2012-01-21
  • 1970-01-01
  • 2011-10-04
  • 2015-11-27
  • 1970-01-01
  • 2018-12-23
  • 2011-01-16
相关资源
最近更新 更多