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

时间:2015-09-08 04:07:32

标签: c#

我正在尝试登录网站以自动检查一些项目的状态。我遇到的问题是,即使我设法填充用户名/密码字段(我可以看到用户名是正确的,密码被屏蔽),我收到消息

  

登录凭据不正确

我使用webbrowser组件尝试了以下内容:

  1. 手动输入密码并按编程提交 - 失败

  2. 手动输入用户名/密码,然后按编程提​​交 - 失败

  3. 手动输入用户名/密码并手动点击提交 - 出错了 消息但已登录。

  4. 表单的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">
    

    我已经尝试了以下代码,我已确保单击了正确的按钮。我在这里做错了什么?谢谢!

    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");
       }
    }
    

2 个答案:

答案 0 :(得分:0)

您应该使用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

获取数据

修改

您还可以查看Selenium Webdriver with C#

答案 1 :(得分:0)

感谢您的建议,我设法通过使用Fidler解决了这个问题,获取了帖子字符串,然后通过Navigate函数将其发布到webbrowser     webBrowser1.Navigate(&#34; URL&#34;,&#34;&#34;,byte1,&#34;内容类型:application / x-www-form-
    urlencoded的&#34);

相关问题