2011-03-15 86 views
14

我正在做一個自動化程序。我將一個網頁加載到我的窗體窗體中,並將​​其加載到WebBrowser控件中。然後,我需要以編程方式點擊WebBrowser上的鏈接。我怎樣才能做到這一點?例如:如何用HTMLElement編程鏈接元素?

  1. <a href="http://www.google.com">Google Me</a>

  2. <a href="http://www.facebook.com" id="fbLink">Facebook Me</a>

以上是2個不同的條件。第一個元素沒有id屬性,而第二個元素沒有。有關如何以編程方式點擊每個想法的想法?

+0

你是什麼意思通過點擊編程? –

+0

程序將自動點擊鏈接。點擊編程意味着它被程序點擊,但沒有被用戶點擊 – DEN

回答

17

你必須要找到你的元素首先,通過其ID或其他過濾器:

HtmlElement fbLink = webBrowser.Document.GetElementByID("fbLink"); 

而且爲了模擬「點擊」:

fbLink.InvokeMember("click"); 

尋找通過內部文本的鏈接的示例:

HtmlElement FindLink(string innerText) 
{ 
    foreach (HtmlElement link in webBrowser.Document.GetElementsByTagName("a")) 
    { 
     if (link.InnerText.Equals("Google Me")) 
     { 
      return link; 
     } 
    } 
} 
+0

我不能在axwebbrowser事件下實現此代碼。我嘗試使用斷點調試它,但我發現它會自動停止在「foreach(webBrowser.Document.GetElementsByTagName(」a「)中的HtmlElement鏈接)」。你知道發生了什麼嗎? – DEN

+0

mshtml.HTMLDocument htm =(mshtml.HTMLDocument)axWebBrowser1.Document; 的foreach(在htm.getElementsByTagName(的HtmlElement鏈路 「A」)) { 如果(link.InnerText.Equals( 「高級檢索」)) { MessageBox.Show( 「酵母!!」); } } – DEN

+0

它的非常舊的帖子仍然我想知道爲什麼我總是將'webBrowser.Document'作爲'null',以及如何處理'DocumentCompleted'事件。 – Sandy

1

然後您需要一種自動化瀏覽器的方法。

做到這一點的一種方法是使用Watin(https://sourceforge.net/projects/watin/)。它允許你編寫一個.Net程序,通過一個方便的對象模型來控制瀏覽器。它主要用於爲網頁編寫自動化測試,但它也可用於控制瀏覽器。

如果你不想用這種方式來控制瀏覽器,那麼你可以編寫一個你在頁面上包含的javascript代碼,但是我懷疑你是在做什麼。

+0

thx您的回覆,符文。但是,我自己使用axWebBrowser編寫自動化功能。但我面臨的問題點擊鏈接:( – DEN

+0

@DEN如果這樣一個簡單的任務是一個問題,這是一個強有力的論據,而不是使用庫。 – user3285954

+0

不知道這是否曾經watin的域名,但它不再。只位於http://watin.sourceforge.net/index.html – paqogomez