我正在创建一个带有 Webbrowser 控件的表单,该控件可以自动登录到站点。当我调试它时,我可以看到它启动到站点并很好地填写用户名和密码,但是一旦登录,它就会再次通过相同的代码,因此由于找不到相同的元素而导致错误。为什么程序会循环执行这段代码?我是否将代码输入了错误的事件处理程序?
namespace MyProject
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlDocument doc = webBrowser1.Document;
HtmlElement username = doc.GetElementById("UserName");
HtmlElement password = doc.GetElementById("Password");
HtmlElement submit = doc.GetElementById("submit");
username.SetAttribute("value", "XXXXXXXX");
password.SetAttribute("value", "YYYYYYYYYY");
submit.InvokeMember("click");
}
}
}
最佳答案
每当 任何 文档完成加载时,DocumentCompleted
事件都会触发。
登录后,该事件会在您加载下一页时再次触发。
您应该检查 URL,只有在实际登录页面时才执行自动登录。
(如果网络钓鱼者向您的应用发送虚假登录页面以窃取用户密码,请确保不要自动登录)
关于c# - 在网络浏览器控件上自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19385840/