我正在尝试登录网站以自动检查一些项目的状态。我遇到的问题是,即使我设法填充用户名/密码字段(我可以看到用户名是正确的,密码被屏蔽),我收到消息
登录凭据不正确
我使用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">
我已经尝试了以下代码,我已确保单击了正确的按钮。我在这里做错了什么?谢谢!
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");
}
}
答案 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
答案 1 :(得分:0)
感谢您的建议,我设法通过使用Fidler解决了这个问题,获取了帖子字符串,然后通过Navigate函数将其发布到webbrowser
webBrowser1.Navigate(&#34; URL&#34;,&#34;&#34;,byte1,&#34;内容类型:application / x-www-form-
urlencoded的&#34);