2014-01-23 37 views
0

我有一個web瀏覽器,我想點擊這樣的事情:C#web瀏覽器 - 如何點擊上的東西不進行身份

<a href="javascript:insertUnit($('#unit_input_axe'), 0)"></a> 

這是我的代碼,但它不工作:

HtmlElementCollection links = _webB.Document.GetElementsByTagName("A"); 

      foreach (HtmlElement link in links) 
      { 
       if (link.OuterHtml.Equals("<a href=" + "javascript:insertUnit($('#unit_input_axe'), 0)" + ">(0)</a>")) 
       link.InvokeMember("click"); 
      } 

我需要幫助! 謝謝。

+0

您的問題與未找到鏈接或找不到鏈接的事實有關嗎?您可以使用調試器輕鬆檢查它。 –

回答

0

最簡單的解決方案是將「id」屬性添加到「a」元素,然後通過其id屬性找到此元素,而不是通過整個href表達式搜索此元素。

在你當前的Equals表達式中,在原始表達式中不存在的開始標記和結束標記之間存在(0)更多。

也請嘗試更改

HtmlElementCollection links = _webB.Document.GetElementsByTagName("A"); 

要:

HtmlElementCollection links = _webB.Document.GetElementsByTagName("a"); 

因爲到目前爲止我記得的getElementsByTagName方法是區分大小寫的。

0

我看不出你的相等比較將永遠是正確的。您比較:

<a href="javascript:insertUnit($('#unit_input_axe'), 0)">(0)</a> 

有:

"<a href=" + "javascript:insertUnit($('#unit_input_axe'), 0)" + ">(0)</a>" 

有第二屬性值周圍沒有引號。因此,它應該,我認爲是:

if (link.OuterHtml.Equals("<a href=\"javascript:insertUnit($('#unit_input_axe'), 0)\">(0)</a>")) 

離開那個放在一邊,我已經使用WebBrowser.Document.InvokeScript一些成功這一點。由於您似乎已經知道要執行的特定函數名稱和值,因此可以避免選擇特定的DOM項目(A標記),並直接執行javascript。

有一個好看的蒞臨指導:http://www.codeproject.com/Tips/60924/Using-WebBrowser-Document-InvokeScript-to-mess-aro

0

我認爲,從標籤改變「A」到「一」解決了這個問題。 這是我的代碼正在工作。感謝大家的幫助!

HtmlElementCollection links = _webB.Document.GetElementsByTagName("a"); 

      foreach (HtmlElement link in links) 
      { 
       if (link.OuterHtml.ToString().Contains("unit_input_axe")) 
        link.InvokeMember("click"); 
      } 
相關問題