C# 当多个Id标记相同时,自动填充网站中的文本框#

C# 当多个Id标记相同时,自动填充网站中的文本框#,c#,webbrowser-control,getelementbyid,getelementsbytagname,getelementsbyclassname,C#,Webbrowser Control,Getelementbyid,Getelementsbytagname,Getelementsbyclassname,我想通过我的c#程序在网站上填写文本框 我的问题是,我要填充的文本框的Id标记与另一个文本框的Id标记相同,并且我要填充的不是第一个 我可以用密码找到我需要的装备 var oForm = This.Document.Forms[2]; 这是表单的innerhtml,我需要填写用户名、密码、电子邮件和时区 <INPUT style="WIDTH: 150px" id=username name=username_reg size=30> <INPUT style="WIDTH:

我想通过我的c#程序在网站上填写文本框

我的问题是,我要填充的文本框的Id标记与另一个文本框的Id标记相同,并且我要填充的不是第一个

我可以用密码找到我需要的装备

var oForm = This.Document.Forms[2];
这是表单的innerhtml,我需要填写用户名、密码、电子邮件和时区

<INPUT style="WIDTH: 150px" id=username name=username_reg size=30>
<INPUT style="WIDTH: 150px" id=password name=password_reg value="" size=30 type=password>
<INPUT style="WIDTH: 150px" id=mail_reg name=mail_reg size=30>

SELECT name=time_zone
存在异常,
未找到成员。(HRESULT的异常:0x80020003(DISP_E_MEMBERNOTFOUND))

有人知道该怎么办吗?

试试:

    var form = webBrowser1.Document.Forms[2];

    FindFormInputElementByIdAndSetItsValue(form, "username", "{{UserName}}");
    FindFormInputElementByIdAndSetItsValue(form, "password", "{{Password}}");
    FindFormInputElementByIdAndSetItsValue(form, "mail_reg", "{{EMail}}");

    public void FindFormInputElementByIdAndSetItsValue(
                 HtmlElement form, string id, string value)
    {
        form.GetElementsByTagName("input")
            .OfType<System.Windows.Forms.HtmlElement>()
            .Where(x => x.Id == id) 
            .First()
            .SetAttribute("value", value);
    }
public void findformInputElementById和setitsValue(
HtmlElement表单、字符串id、字符串值)
{
form.GetElementsByTagName(“输入”)
第()类
.其中(x=>x.Id==Id)
.First()
.SetAttribute(“值”,值);
}

没有唯一的元素ID是一种不好的做法。。
    public void FindFormInputElementByIdAndSetItsValue(
                 HtmlElement form, string id, string value)
    {
        form.GetElementsByTagName("input")
            .OfType<System.Windows.Forms.HtmlElement>()
            .Where(x => x.Id == id) 
            .First()
            .SetAttribute("value", value);
    }