2

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

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

我可以用代码找到我需要的 HemlElment

var oForm = This.Document.Forms[2];

这是oForm的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

如果我尝试

oForm.SetAttribute("username_reg", RegisterData.UserData.Username);

有一个例外,Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))

有人知道该怎么做吗?

4

1 回答 1

0

尝试:

    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);
    }
于 2014-07-20T12:07:27.447 回答