如何获取HTML文本框值?

时间:2014-06-06 23:15:20

标签: c# html winforms webbrowser-control

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

在我的应用程序中读取它时
string price = webBrowser1.Document.GetElementById("price").GetAttribute("value");

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

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:5)

不幸的是,无法使用GetAttribute检索文本框中的值。

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

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

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

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);
};

答案 1 :(得分:0)

尝试使用innertext

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