无法向c# web浏览器登录表单发送正确的值
本文关键字:表单 登录 web 浏览器 | 更新日期: 2023-09-27 18:11:41
我试图登录到一个网站,自动检查几个项目的状态。我遇到的问题是,即使我设法填充了usernname/password字段(我可以看到用户名是正确的,密码是屏蔽的),我得到的消息是
登录凭据不正确
我已经尝试了以下使用web浏览器组件:
-
手动输入密码并按程序提交-失败
-
手动输入用户名/密码并按程序提交-失败
-
手动输入用户名/密码并点击手动提交-出错
表单的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");
}
}
你应该使用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");