无法向c# web浏览器登录表单发送正确的值

本文关键字:表单 登录 web 浏览器 | 更新日期: 2023-09-27 18:11:41

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

登录凭据不正确

我已经尝试了以下使用web浏览器组件:

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

  2. 手动输入用户名/密码并按程序提交-失败

  3. 手动输入用户名/密码并点击手动提交-出错

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

无法向c# web浏览器登录表单发送正确的值

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

获取数据

编辑

你也可以用c#看一下Selenium Webdriver

感谢您的建议,我已经设法解决了这个问题,通过使用提琴,获得后字符串,然后通过导航功能发布到浏览器webBrowser1。导航("URL", ", byte1, "Content-Type: application/x-www-form-
urlencoded");