2013-02-19 255 views
-4

這是我試圖點擊該按鈕:點擊一個HTML按鈕

<td class="dark" onclick="document.getElementById('id').value = '0'; document.getElementById('form').submit()"> 
    test 
</td> 

我想這個代碼,使用在WinForm WebBrowser控件單擊元素:

HtmlElementCollection links = webBrowser1.Document.Links; 

foreach (HtmlElement link in links) 
{ 
    if ((link.InnerText != null) && (link.InnerText.Equals("test"))) 
     link.InvokeMember("Click"); 
} 

發出滴答聲鏈接,但不是像我上面發佈的按鈕。我也嘗試過這樣的不同的事情:

if (curElement.GetAttribute("id").Equals("0")) 
{ 
    curElement.InvokeMember("click"); 
} 

從WebBrowser控件中單擊該表單元格的正確方法是什麼?

+0

嘗試使用此SO回答來調用腳本。 http://stackoverflow.com/questions/153748/how-to-inject-javascript-in-webbrowser-control – 2013-02-19 20:26:06

回答

3

問題是,你稱之爲'鏈接'不是一個Web瀏覽器方面的鏈接,而是一個所謂的表格單元格,在HTML中表示爲<td>標籤,其解釋爲here。這就是當你迭代document.links集合時你沒有找到你想要的東西的原因。

您可以使用webbrowsercontrol的Document屬性上的其他方法來獲取特定標記名稱GetEelementsByTagName的列表。那會給你<td>的。如果您可以檢查是否到達正確的<td>,然後在元素上調用RaiseEvent以調用所需的行爲,那麼這很簡單。

foreach (HtmlElement td in this.webBrowser1.Document.GetElementsByTagName("td")) 
    { 
     Debug.WriteLine(td.InnerText); 
     if (td.InnerText.Equals("test")) 
     { 
        td.RaiseEvent("onclick"); 
     } 
    }