我使用网络浏览器登录facebook。一切正常,但问题是,当我调用按钮时,我需要检查密码是否正确但是,检查似乎在调用按钮之前发生,这完全没有意义,因为检查代码是在调用之后。 / p>
private void Facebook_Login(String username, String password)
{
webBrowser1.Url = new Uri("http://m.facebook.com");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
HtmlElementCollection inputs = webBrowser1.Document.GetElementsByTagName("input");
foreach(HtmlElement input in inputs)
{
if (input.GetAttribute("name") == "email")
{
input.SetAttribute("value", "jamesjeffery@hotmail.co.uk");
}
if (input.GetAttribute("name") == "pass")
{
input.SetAttribute("value", "kelaroostj"); // dont worry that pass wont work lol.
}
if (input.GetAttribute("name") == "login")
{
input.InvokeMember("click");
}
}
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
HtmlElementCollection bs = webBrowser1.Document.GetElementsByTagName("b");
foreach(HtmlElement b in bs)
{
MessageBox.Show(b.InnerHtml);
}
Log_Message("Logged into Facebook with: jamesjeffery@hotmail.co.uk");
}
答案 0 :(得分:1)
这是因为您正在循环所有HTML元素。你只需要“逻辑”顺序的代码,这并不意味着HTMLElementCollection也有它。
如果HTML按钮是行中的第一个元素,那么首先发生的是单击该按钮。
HtmlElement Username = Browsers[0].Document.GetElementById("name");
HtmlElement Password = Browsers[0].Document.GetElementById("pass");
HtmlElement LoginBtn = Browsers[0].Document.GetElementById("login");
Username.SetAttribute("value", "jamesjeffery@hotmail.co.uk");
Password.SetAttribute("value", "kelaroostj");
LoginBtn.InvokeMember("click");
这假设元素的ID如上所述。