2010-03-27 2 views
1

웹 브라우저를 사용하여 페이스 북에 로그인하고 있습니다. 모든 것은 작동하지만 문제는 내가 암호를 고쳤는지 확인해야 할 때입니다. 암호가 맞는지 확인해야하지만, 확인 코드가 호출 한 이후에 아무런 의미가없는 버튼이 호출되기 전에 확인이 수행 된 것 같습니다.C# WebBrowser 호출 문제

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]"); 
    } 

답변

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", "[email protected]"); 
Password.SetAttribute("value", "kelaroostj"); 
LoginBtn.InvokeMember("click"); 

이것은 요소의 ID가 위에 제공된 것과 같다고 가정합니다.