Нажмите ссылку HTML внутри элемента управления WebBrowser - PullRequest
6 голосов
/ 13 августа 2010

C # Visual Studio 2010

Я загружаю сложную HTML-страницу в элемент управления веб-браузера. Но у меня нет возможности изменить веб-страницу. Я хочу щелкнуть ссылку на странице автоматически из формы Windows. Но, похоже, идентификатор генерируется случайным образом при каждой загрузке страницы (поэтому я считаю, что ссылка на идентификатор не будет работать).

Содержимое ссылки href:

<a 

id="u_lp_id_58547" href="javascript:void(0)" class="SGLeftPanelText" onclick="setStoreParams('cases;212', 212); window.leftpanel.onClick('cases_ss_733');return false; ">

My Assigned</a>

В любом случае щелкнуть ссылку из C #?

Спасибо!


UPDATE:

Я чувствую, что это близко, но оно просто не работает:

HtmlElementCollection links = helpdeskWebBrowser.Document.Window.Frames["main_pending_events_frame"].Document.GetElementsByTagName("a");
MessageBox.Show(links.Count.ToString());

Я пробовал подключать каждое имя кадра и пробовал оба "a" и "A" в поле TagName, но просто не повезло. Я просто не могу найти никаких ссылок; в окне сообщения всегда 0. Чего мне не хватает?

Ответы [ 2 ]

17 голосов
/ 13 августа 2010

Примерно так должно работать:

HtmlElement link = webBrowser.Document.GetElementByID("u_lp_id_58547")
link.InvokeMember("Click")

EDIT:

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

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

foreach (HtmlElement link in links)
{
    if (link.InnerText.Equals("My Assigned"))
        link.InvokeMember("Click");
}

UPDATE:

Вы можете получить ссылки в IFrame, используя:

webBrowser.Document.Window.Frames["MyIFrame"].Document.GetElementsByTagName("A");
1 голос
/ 13 августа 2010

Возможно, вам придется изолировать значение идентификатора ссылки, используя больше окружающего контекста HTML в качестве «цели», а затем извлечь новый случайный идентификатор.

В прошлом я использовал «HtmlAgilityPack для «простого разбора» фрагментированного HTML-кода с целью выделения областей интереса на странице - эта библиотека проста в использовании и надежна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...