Как программно щелкнуть элемент ссылки с помощью HTMLElement?

Я делаю программу автоматизации. Я загружаю веб-страницу в свою форму Windows и загружаю ее в элемент управления WebBrowser. Затем мне нужно щелкнуть по ссылке из WebBrowser программно. Как я могу это сделать? например:

  • <a href="#" onclick="location.href='http://www.google.com'; return false;">Google Me</a>

  • <a href="#" onclick="location.href='http://www.facebook.com'; return false;" id="fbLink">Facebook Me</a>

Выше приведены два разных условия. Первый элемент не имеет атрибута id, а второй -. Любая идея о том, как щелкнуть каждый программно?

Ответы

Ответ 1

Сначала вы должны найти свой элемент, его идентификатор или другие фильтры:

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

И для имитации "click":

fbLink.InvokeMember("click");

Пример поиска вашей ссылки по внутреннему тексту:

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

Ответ 2

Тогда вам нужен способ автоматизации браузера.

Один из способов сделать это - использовать Watin (https://sourceforge.net/projects/watin/). Это позволяет вам написать программу .Net, которая управляет браузером с помощью удобной объектной модели. Он в основном используется для написания автоматических тестов для веб-страниц, но его также можно использовать для управления браузером.

Если вы не хотите управлять браузером таким образом, тогда вы можете написать javascript, который вы укажете на своей странице, который щелкнул, но я сомневаюсь, что это то, что вам нужно.