尝试仅使用类名填充文本框

时间:2013-07-22 20:14:08

标签: c# windows winforms browser getelementsbytagname

<input class="input" maxlength="200">

这是HTML中的代码,它创建了一个文本框。我正试图在文本框中输入内容(使用webBrowser),我可以通过标记名称获取该元素,我只是不知道如何输入文本,因为它没有像“值”或“文本”这样的属性“或者其他什么......这就是全部。它也不是我的服务器,所以我无法改变任何东西。

完整代码:

<div><label>Enter input: <input class="input"
maxlength="200"></label></div>

删除

<input class="input" maxlength="200">

从页面中删除文本框...
如何在该框中输入文字?

我的代码:

foreach(HtmlElement z in webBrowser.Document.GetElementsByTagName("input")){
     try{
     z.SetAttribute("value", "My text"); //Can't set attribute because it has none
     } catch(Exception zz){};
}

2 个答案:

答案 0 :(得分:2)

假设你有HtmlElement

htmlElement.SetAttribute("value", "My textbox value");

编辑:完整代码:

foreach(HtmlElement z in webBrowser.Document.GetElementsByTagName("input")) {
    if (z.GetAttribute("className") == "input") {
        z.SetAttribute("value", "My text");
    }
}

有关SetAttribute函数的信息,请参阅MSDN

  

如果attributeName不是元素的已定义属性,则SetAttribute将在元素上将其定义为新属性。

答案 1 :(得分:2)

而不是使用element.SetAttribute("value", "My text")使用element.InnerText="My text"

查看我的示例

public Form1()
        {
            InitializeComponent();
            webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.DocumentText = "<div><label>Enter input: <input class=\"input\"maxlength=\"200\"></label></div>";
        }

        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            foreach (HtmlElement element in webBrowser1.Document.GetElementsByTagName("input"))
            {
               if(element.GetAttribute("className")=="input")
               {
                   element.InnerText="My text";
                }
            }
        }