2013-02-19 7 views
-4

Это кнопка я пытаюсь нажать:При нажатии на кнопку HTML

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

Я попробовал этот код, который использует элемент управления WebBrowser Winform щелкнуть на этом элементе:

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 –

ответ

3

Проблема заключается в том, что то, что вы называете «ссылкой», не является ссылкой в ​​терминах WebBrowser, а так называемой табличной ячейкой, которая находится в html, выраженной в виде тега <td>, который объясняется here. Именно поэтому, когда вы перебираете коллекцию document.links, вы не можете найти то, что ищете.

Вы можете использовать другой метод в свойстве Document для webbrowsercontrol, чтобы получить список имен тегов specificc, 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"); 
     } 
    } 
Смежные вопросы