C#无ID登录站点
我试图创建一个功能,将自动登录到一个网站的人 frm.Login和frm.Password在那里,因为我正在从另一个表单导入字符串。另一种形式是他们输入凭证的地方 免责声明: 我没有访问此网站的权限 HTML代码C#无ID登录站点,c#,html,winforms,C#,Html,Winforms,我试图创建一个功能,将自动登录到一个网站的人 frm.Login和frm.Password在那里,因为我正在从另一个表单导入字符串。另一种形式是他们输入凭证的地方 免责声明: 我没有访问此网站的权限 HTML代码 <input type="email" required="" size="21" name="email"> //email <input type="password" required="" name="password" size="21"> //pas
<input type="email" required="" size="21" name="email"> //email
<input type="password" required="" name="password" size="21"> //password
<input type="submit" name="submit" value="Sign in"> //button to sign in.
单击按钮的代码
public void ClickButton(string type)
{
var button = webBrowser1.Document.GetElementsByTagName("submit")
.Cast<HtmlElement>()
.FirstOrDefault(m => m.GetAttribute("type") == type);
if (button != null)
button.InvokeMember("click");
}
public void点击按钮(字符串类型)
{
var button=webBrowser1.Document.GetElementsByTagName(“提交”)
.Cast()
.FirstOrDefault(m=>m.GetAttribute(“类型”)==type);
如果(按钮!=null)
按钮。调用成员(“单击”);
}
错误:Test.exe中发生“System.NullReferenceException”类型的未处理异常。其他信息:对象引用未设置为对象的实例
给出错误的行:webBrowser1.Document.GetElementsByTagName(“输入”).GetElementsByName(“电子邮件”)[0].SetAttribute(“值”,frm.Login)代码>
用于单击按钮的代码。它接受“登录”值并单击它
foreach (HtmlElement el in elCol)
{
if (el.GetAttribute("value").Equals("Sign in"))
{
el.InvokeMember("click");
}
}
您的问题是什么?如何将winforms应用程序中的字符串传递到站点的登录和密码文本框中…一旦导航到站点,您需要等待站点完全加载。现在,您可以立即设置可能失败的文本框值。这个错误正是我所想的。webBrowser有一个用于加载文档的事件。您需要等待DocumentCompleted事件:查看以下示例:
foreach (HtmlElement el in elCol)
{
if (el.GetAttribute("value").Equals("Sign in"))
{
el.InvokeMember("click");
}
}