单击WebBrowser控件内的HTML链接

C#Visual Studio 2010

我正在将一个复杂的html页面加载到webbrowser控件中。 但是,我没有能力修改网页。 我想从Windows窗体自动单击页面上的链接。 但是,每次加载页面时,ID似乎是随机生成的(因此我认为引用ID不起作用)。

这是一个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 

无论如何点击C#中的链接?

谢谢!


更新:

我觉得这很接近,但它不起作用:

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

我已经尝试插入每个帧名称并在TagName字段中尝试了“a”和“A”,但是没有任何运气。 我找不到任何链接; 消息框始终为0.我缺少什么?

像这样的东西应该工作:

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

编辑:

由于ID是随机生成的,因此另一个选项可能是通过其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上下文作为“目标”来隔离链接ID值,然后提取新的随机ID。

在过去,我使用“ HtmlAgilityPack ”轻松解析“屏幕抓取”HTML以隔离页面中感兴趣的区域 – 这个库似乎易于使用和可靠。