2010-03-27 5 views
1

Je me connecte à Facebook à l'aide d'un navigateur Web. Tout fonctionne, mais le problème est quand j'appelle le clic de bouton Je dois vérifier si le mot de passe est correct mais, la vérification semble se produire avant que le bouton soit invoqué qui n'a aucun sens parce que le code de vérification est après l'appel.Numéro C# WebBrowser Invoke

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", "[email protected]"); 
      } 
      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: [email protected]"); 
    } 

Répondre

1

Ceci est dû au fait que vous parcourez tous les éléments HTML. Vous avez juste ce code dans l'ordre "logique", cela ne signifie pas que HTMLElementCollection l'a aussi.

Si le bouton HTML est le premier élément de la rangée, la première chose qui se produira est que le bouton est cliqué.

HtmlElement Username = Browsers[0].Document.GetElementById("name"); 
HtmlElement Password = Browsers[0].Document.GetElementById("pass"); 
HtmlElement LoginBtn = Browsers[0].Document.GetElementById("login"); 

Username.SetAttribute("value", "[email protected]"); 
Password.SetAttribute("value", "kelaroostj"); 
LoginBtn.InvokeMember("click"); 

Ceci suppose que l'ID des éléments est tel que fourni ci-dessus.