2017-01-23 23 views
1

我希望能夠打開一個網頁,登錄並能夠在下一頁上做的事情。 DoPlans不會執行。這是到目前爲止我的代碼...(我知道我有噸有很多的變量)如何使用多個WebBrowser文檔完成

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     webBrowser1.Navigate("t"); 
    } 

    private void DoPlans(object sender, 
WebBrowserDocumentCompletedEventArgs e) 
    { 
     textBox1.AppendText("started"); 
     webBrowser1.Document.GetElementById("t").InvokeMember("Click"); 
     webBrowser1.Document.GetElementById("t").InvokeMember("Click"); 
     foreach (HtmlElement elem in webBrowser1.Document.GetElementsByTagName("input")) 
     { 
      if (elem.GetAttribute("value") == "Submit Weekend Plans") 
      { 
       elem.InvokeMember("Click"); 
      } 
     } 
    } 

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     webBrowser1.Document.GetElementById("username").SetAttribute("value", "t"); 
     webBrowser1.Document.GetElementById("password").SetAttribute("value", "t"); 
     foreach (HtmlElement elem in webBrowser1.Document.GetElementsByTagName("input")) 
     { 
      if (elem.GetAttribute("value") == "Login") 
      { 
       webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DoPlans); 
       elem.InvokeMember("Click"); 
      } 
     } 
    } 
} 
+0

你在裏面訂閱事件事件自己的事件處理程序。似乎是正確的方法。 – abatishchev

+0

我看到你正在尋找一個元素並點擊它。但是你正在訂閱錯誤的事件。如果點擊確實起作用,那麼Web瀏覽器將導航到另一個頁面。這裏同一個事件處理程序應該第二次觸發。你只需要區分不同的頁面。你可以嘗試使用'e.Url'。 – abatishchev

回答

1

嘗試是這樣的:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    switch (e.Url.ToString()) 
    { 
     case "home page": 
     { 
      // fire click 
      break; 
     } 
     case "next page": 
     { 
      // handle logged in user 
      break; 
     } 
    } 
} 
相關問題