2010-08-13 14 views
6

C# Visual Studio 2010Klicken Sie auf einen HTML-Link in einem WebBrowser-Steuerelement

Ich laden eine komplexe HTML-Seite in ein Webbrowser-Steuerelement. Ich habe jedoch nicht die Möglichkeit, die Webseite zu ändern. Ich möchte einen Link auf der Seite automatisch aus dem Windows-Formular klicken. Aber die ID scheint jedes Mal, wenn die Seite geladen wird, zufällig generiert zu werden (so glaube ich, dass die Referenzierung der ID nicht funktioniert).

Dies ist der Inhalt des a href Link:

<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> 

Ist sowieso die Verbindung von C# klicken?

Danke!


UPDATE:

ich so das Gefühl der Nähe, aber es funktioniert einfach nicht:

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

Ich habe versucht, in jedem einzelnen Frame-Namen Einstecken und versucht, sowohl "a" und "A" im Feld TagName, aber ich hatte einfach kein Glück. Ich kann einfach keine Links finden; das Meldungsfeld ist immer 0. Was vermisse ich?

Antwort

17

So etwas sollte funktionieren:

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

EDIT:

Da die IDs zufällig generiert werden, kann eine weitere Option sein, die Links von ihren InnerText zu identifizieren; Entlang dieser Linien.

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

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

UPDATE:

Sie können die Links in einem IFrame mit bekommen:

webBrowser.Document.Window.Frames["MyIFrame"].Document.GetElementsByTagName("A"); 
+0

aber die Frage sagt "Aber, die ID scheint zufällig jedes Mal erzeugt wird, wenn die Seite geladen wird (so glaube ich, die Referenzierung der ID wird nicht funktionieren)." –

+0

John, Sie haben Recht - die Links erhalten bei jedem Öffnen der Seite eine Zufallszahl. Diese Methode finde ich bei meinen Suchen immer wieder, aber ich kann keine andere Möglichkeit finden, sie ohne die ID zu implementieren. Die 'cases_ss_733' ist immer die gleiche, ich weiß nur nicht, wie das verwendet werden könnte. – Josh

+0

@ John. Ja, du hast recht, aber der zufällig generierte ID-Teil wurde nach meiner ersten Antwort hinzugefügt. @Josh. Können Sie den Link anhand des InnerText-Werts identifizieren? – Garett

1

Vielleicht finden Sie den Link-ID-Wert isolieren müssen, um mehr von dem umgebenden HTML Zusammenhang mit als ein "Ziel" und extrahiere dann die neue zufällige ID.

In der Vergangenheit habe ich die "HtmlAgilityPack" verwendet, um einfach "screen-scraped" HTML zu analysieren, um Bereiche von Interesse innerhalb einer Seite zu isolieren - diese Bibliothek scheint einfach zu bedienen und zuverlässig zu sein.

Verwandte Themen