C # Visual Studio 2010
Я загружаю сложную HTML-страницу в элемент управления веб-браузера. Но у меня нет возможности изменить веб-страницу. Я хочу щелкнуть ссылку на странице автоматически из формы Windows. Но, похоже, идентификатор генерируется случайным образом при каждой загрузке страницы (поэтому я считаю, что ссылка на идентификатор не будет работать). HREF = "JavaScript: недействительным (0)" class = "SGLeftPanelText" onclick = "setStoreParams ('case; 212', 212); window.leftpanel.onClick ('case_ss_733'); вернуть false;">
My Assigned</a>
В любом случае щелкнуть ссылку в C #?
Спасибо!
ОБНОВЛЕНИЕ:
Я чувствую, что это близко, но это просто не работает:
HtmlElementCollection links = helpdeskWebBrowser.Document.Window.Frames["main_pending_events_frame"].Document.GetElementsByTagName("a");
MessageBox.Show(links.Count.ToString());
Я пробовал подключать каждое имя кадра и пробовал и «a», и «A» в поле TagName но просто не повезло. Я просто не могу найти никаких ссылок; окно сообщения всегда равно 0. Чего мне не хватает?
Должно работать что-то вроде этого:
HtmlElement link = webBrowser.Document.GetElementByID("u_lp_id_58547")
link.InvokeMember("Click")
РЕДАКТИРОВАТЬ:
Поскольку идентификаторы генерируются случайным образом, другим вариантом может быть идентификация ссылок по их InnerText
; по этим линиям.
HtmlElementCollection links = webBrowser.Document.GetElementsByTagName("A");
foreach (HtmlElement link in links)
{
if (link.InnerText.Equals("My Assigned"))
link.InvokeMember("Click");
}
ОБНОВЛЕНИЕ:
Вы можете получить ссылки в IFrame, используя:
webBrowser.Document.Window.Frames["MyIFrame"].Document.GetElementsByTagName("A");
Возможно, вам придется изолировать значение идентификатора ссылки, используя больше окружающего HTML-контекста в качестве «цели» и затем извлеките новый случайный идентификатор.
Раньше я использовал « HtmlAgilityPack », чтобы легко анализировать HTML-код с «очищенным экраном», чтобы изолировать интересующие области на странице - эта библиотека кажется простой в использовании и надежной.