无法将正确的值发布到c#webbrowser登录表单

无法将正确的值发布到c#webbrowser登录表单,c#,C#,我试图登录到一个网站,自动检查一些项目的状态。我遇到的问题是,即使我成功地填充了usernname/password字段(我可以看到用户名是正确的,密码是屏蔽的),我仍然会收到这样的消息 登录凭据不正确 我使用webbrowser组件尝试了以下操作: 手动输入密码并按“以编程方式提交”-失败 手动输入用户名/密码并按“以编程方式提交”-失败 手动输入用户名/密码并点击手动提交-出现错误 消息,但已登录 表单的HTML代码类似于以下内容: <input id="User" type="tex

我试图登录到一个网站,自动检查一些项目的状态。我遇到的问题是,即使我成功地填充了usernname/password字段(我可以看到用户名是正确的,密码是屏蔽的),我仍然会收到这样的消息

登录凭据不正确

我使用webbrowser组件尝试了以下操作:

  • 手动输入密码并按“以编程方式提交”-失败

  • 手动输入用户名/密码并按“以编程方式提交”-失败

  • 手动输入用户名/密码并点击手动提交-出现错误 消息,但已登录

  • 表单的HTML代码类似于以下内容:

    <input id="User" type="text" name="usrname" data-bind="value:username,returnKey:loginPageC" onkeydown="ClearEMessage()" tabindex="1">
    
    <input id="Password" type="text" name="pass" data-bind="value:password,returnKey:loginPageC" onkeydown="ClearEMessage()" tabindex="1">
    

    您应该使用ID而不是名称

    HtmlDocument doc = webBrowser1.Document;
    HtmlElement userName = doc.GetElementById("User");
    HtmlElement pass = doc.GetElementById("Password");
    userName.SetAttribute("value", "user123");
    pass.SetAttribute("value", "pass321");
     HtmlElementCollection elc = this.webBrowser1.Document.GetElementsByTagName("input");
    foreach (HtmlElement el in elc)
    {
      if (el.GetAttribute("type").Equals("submit"))
      {
          el.InvokeMember("Click");
       }
    }
    
    因为您正试图通过
    GetElementById

    编辑
    您还可以查看

    谢谢您的建议,我已经通过使用Fidler解决了这个问题,获取了post字符串,然后通过导航功能将其发布到webbrowser webBrowser1.导航(“URL”、“”和字节1”,内容类型:application/x-www-form-

    "(修订);

    Webbrowser组件是一项要求,还是您也可以对
    HttpWebRequest
    /
    HttpWebResponse
    使用后台处理?您是否已与Fiddler核实了在真实浏览器中执行请求与您的工具相比的外观?
    HtmlDocument doc = webBrowser1.Document;
    HtmlElement userName = doc.GetElementById("User");
    HtmlElement pass = doc.GetElementById("Password");
    userName.SetAttribute("value", "user123");
    pass.SetAttribute("value", "pass321");
     HtmlElementCollection elc = this.webBrowser1.Document.GetElementsByTagName("input");
    foreach (HtmlElement el in elc)
    {
      if (el.GetAttribute("type").Equals("submit"))
      {
          el.InvokeMember("Click");
       }
    }