Webbrowser SetAttribute 不工作(密码字段)

Ome*_*rus 4 c# browser passwords setattribute

试图编写一个程序,它可以让我在 C# 中的网络浏览器中自动登录。这是我目前为此目的使用的代码:

HtmlElementCollection pageTextElements = loginBrowser.Document.GetElementsByTagName("input");
        foreach (HtmlElement element in pageTextElements)
        {
            if (element.Name.Equals("username"))
                element.SetAttribute("value", this.UserName);
            if (element.Name.Equals("password"))
                element.SetAttribute("value", this.Password);
        }
Run Code Online (Sandbox Code Playgroud)

它填写用户名,而不填写密码?): 谷歌搜索,但只有少数人开始了没有人回复的话题。/:

希望有人可以帮助我。这是密码字段的源 auf:

<input type="password" value="" maxlength="50" size="25" name="password" class="bginput">
Run Code Online (Sandbox Code Playgroud)

小智 5

以上都不适合我,我可以在 DocumentCompleted() 事件处理程序中的用户名文本框中调用 setAttribute() 但不能在密码文本框中调用。我最终让它工作:

HtmlElementCollection inputs = doc.GetElementsByTagName("input");
HtmlElement usr = inputs.GetElementsByName("username")[0];
usr.setAttribute("value", strUsername);

HtmlElement pwd = inputs.GetElementsByName("password")[0];
pwd.GotFocus += new HtmlElementEventHandler(pwd_GotFocus);
pwd.Focus();
Run Code Online (Sandbox Code Playgroud)

然后在 onFocus 处理程序中:

void pwd_GotFocus(object sender, HtmlElementEventArgs e)
{
    HtmlElement pwd = (HtmlElement)sender;
    pwd.SetAttribute("value", strPassword);
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这行得通,而另一个不行。我尝试只更改密码,以防万一设置用户名的文档更改会干扰它。我什至创建了另一个 WebBrowser 控件,然后从源代码中获取 DocumentText,在第二个 WebBrowser 上设置 DocumentText 之前,在原始 html 中查找并替换设置密码值,但它再次没有正确设置该值.

如果有人有一个更清洁的解决方案,我很想知道