【问题标题】:How to get HTML textbox value?如何获取 HTML 文本框值?
【发布时间】:2014-07-28 07:42:02
【问题描述】:

我正在尝试在 C# WinForms 应用程序中获取网站上几个文本框的值。 它是输入类型文本,设置为只读,但是当我尝试在我的应用程序中使用

string price = webBrowser1.Document.GetElementById("price").GetAttribute("value");

它返回一个空字符串。 当我尝试使用.SetAttribute("value", "testValue") 设置一些其他(非只读)输入值时,它工作得很好。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: c# html winforms webbrowser-control


    【解决方案1】:

    很遗憾,无法使用GetAttribute 检索文本框中的值。

    您可以使用以下代码来检索该值:

    dynamic elePrice = webBrowser.Document.GetElementById("price").DomElement;
    string sValue = elePrice.value;
    

    如果您无法使用 dynamic(即 .NET 4+),则必须从 Visual Studio 的 COM 选项卡中引用“Microsoft HTML 对象库”并使用以下内容:

    mshtml.IHTMLInputElement elePrice = (mshtml.IHTMLInputElement)webBrowser.Document.GetElementById("price").DomElement;
    string sValue = elePrice.value;
    

    编辑: 已使用以下代码进行了测试:

    webBrowser.Url = new Uri("http://files.jga.so/stackoverflow/input.html");
    
    webBrowser.DocumentCompleted += (sender, eventArgs) =>
    {
         var eleNormal = (IHTMLInputElement)webBrowser.Document.GetElementById("normal").DomElement;
         var eleReadOnly = (IHTMLInputElement)webBrowser.Document.GetElementById("readonly").DomElement;
         var eleDisabled = (IHTMLInputElement)webBrowser.Document.GetElementById("disabled").DomElement;
    
         MessageBox.Show(eleNormal.value);
         MessageBox.Show(eleReadOnly.value);
         MessageBox.Show(eleDisabled.value);
    };
    

    【讨论】:

    • 这两个都在字符串中返回 null :(
    • 我添加了一个额外的代码示例,以确保 .value 获取禁用和只读输入。他们似乎工作。你能举一个你试图阅读的网址的例子吗?
    • brainwallet.org 试图读取私钥和地址(我在这里写了价格只是为了让示例更清楚,文本框称为“sec”和“addr”)
    • 通过浏览器控件测试此 URL 我收到许多脚本错误,并且未填充“私钥”字段。 “秘密指数”字段已填充(id="hash"),我可以通过编程方式读取它。 Web 浏览器控件是 Internet Explorer 7 的嵌入式版本,因此他们的 JavaScript 可能不支持此版本。是否需要嵌入网络浏览器控件,是否可以使用可以控制其他浏览器的 Selenium?
    • 您可以使用 Selenium 启动和控制 Web 浏览器。它通常用于 Web 应用程序的测试自动化。可以在此处下载 C# API:docs.seleniumhq.org/download,其中包含文档。
    【解决方案2】:

    尝试使用内文

    string price = webBrowser1.Document.GetElementById("price").InnerText;
    

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 2012-06-04
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多