如何获取 HTML 文本框值?
Posted
技术标签:
【中文标题】如何获取 HTML 文本框值?【英文标题】:How to get HTML textbox value? 【发布时间】:2014-07-28 07:42:02 【问题描述】:我正在尝试在 C# WinForms 应用程序中获取网站上几个文本框的值。 它是输入类型文本,设置为只读,但是当我尝试在我的应用程序中使用
string price = webBrowser1.Document.GetElementById("price").GetAttribute("value");
它返回一个空字符串。
当我尝试使用.SetAttribute("value", "testValue")
设置一些其他(非只读)输入值时,它工作得很好。
有人可以帮我解决这个问题吗?
【问题讨论】:
【参考方案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/***/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;
【讨论】:
以上是关于如何获取 HTML 文本框值?的主要内容,如果未能解决你的问题,请参考以下文章
Windows Store App XAML - 如何获取导航页面的文本框值
Windows 商店应用程序 WInRT XAML C# - 如何获取导航页面文本框值
如何在 asp.net 代码中获取引导文本框值并在存储过程中作为参数发送?