Laden...

Link aus IFrame auswählen und anklicken

Erstellt von Speedgaming vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.395 Views
S
Speedgaming Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren
Link aus IFrame auswählen und anklicken

Hallo zusammen,
ich schreibe ein Programm um den Internetexplorer zu steuern. Funktioniert soweit auch ganz gut.

Jetzt suche ich nach einer Methode Links in einem IFrame zu finden/Anzuklicken
das habe ich mit VBA geschafft, allerdings weiß ich nicht, wie ich es nach c# umsetzen soll.

Ich starte einen neuen Browser und navigiere zur URL;

mit:

wb.document.USER.value = "Username";  
wb.document.PASSWORD.value = "Password";  

Fülle ich die Felder und hole mir dann das Element vom Loginbutton.
Nach dem Login gibt es ein Eingabe Feld, wenn ich das Fülle, erscheint ein IFrame mit je nach Eingabe verschiedener Anzahl an Links.
Ich habe mit der URL von dem Javascript bereits auslesen können, welchen Link ich benötige.
Aber ich schaffe es nicht ihn anzuwählen.
Mit VBA habe ich es das geschafft. So sieht der Befehl in VBA aus:

Call IEDocument.iframe.execScript("Choose('Objektnummer,Referenznummer')", "JavaScript")  

und mit

var mydoc = wb.document;
var links = mydoc.links;
for each ((HTMLELEMENT)link in links)... 

bekomme ich die Links die sich auf der Website befinden, aber nicht die in dem IFrame

Habe die Suche bereits bemüht, bekomme da ähnliche Vorschläge wie oben und komme nie auf den Iframe

Hier ist der iframe code:
<tr> <td colspan='2' nowrap="nowrap"> <a href="javascript:choose('Objektnummer, Referenznummer')">Objektname</a> </td> </tr>
<tr> <td colspan='2' nowrap="nowrap"> <a href="javascript:choose('Objektnummer2, Referenznummer2')">Objektname2</a> </td> </tr>

Hoffe ich konnte meine Frage verständlich formulieren, wenn nicht mach ich noch ein Beispielbild rein
Vielen Dank im Voraus

16.807 Beiträge seit 2008
vor 4 Jahren

Willkommen.

Es ist nicht sinn der Sache, dass Du seitenweise HTML Code postest in evtl. der Hoffnung, dass wir Dir den Code schreiben - das wird nicht passieren 😃
Daher habe ich die Unmengen aus HTML auch im Sinne von [Hinweis] Wie poste ich richtig? entfernt.

Du wirst mit C# (respektive .NET als Runtime) den Browser nicht (so einfach) "steuern" oder einen "Link auswählen" können.
Im Gegensatz zu VBA (durch ActiveX) gibt es hierfür keine Unterstützung im IE.

Im .NET Framework gibt es ein sehr gut dokumentiertes WebBrowser-Control, das auf dem IE7 basiert und dahingehend sehr sehr alt ist.
Mit CefSharp hättest Du eine Chrome Engine.

Wenn Du einen solchen Automatismus willst, dann musst Du Dir C# beibringen und quasi selbst das Verhalten eines Browsers nachprogrammieren müssen.

S
Speedgaming Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Vielen Dank für den Edit.

mmhh Schade, soweit werde ich nicht einsteigen können, es ist tatsächlich das einzige was fehlt um das Programm fertig zustellen.

Habe die Grundprinzipien verstanden und bin auch echt lernwillig, aber da habe ich keinen Ansatz und finde auch wirklich nichts passendes.

Und jetzt html und java bzw den Browser komplett zu verstehen da fehlt mir die Zeit.

S
Speedgaming Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Habe jetzt doch versucht mich in die Thematik zu vertiefen.
Aber leider gelingt es mir nicht die Elemente im Iframe zu finden.

Über wb.document.links
Oder wb.document.getElementsByTagName("a")
Bekomme ich die Elemente aus dem Body des HTML document.
Aber nicht die aus dem Iframe.

Hat jemand einen Ansatz, wie ich das anstellen könnte?
Wenn ich erstmal Zugriff auf die Elemente habe, dann bekomme ich sie auch ausgeführt.

5.657 Beiträge seit 2006
vor 4 Jahren

Erstes Suchergebnis bei Google: How TO - Get Iframe Elements

Bitte beachte [Hinweis] Wie poste ich richtig?, Punkt 1.1: "Erst suchen und in die Doku schauen, dann posten"

Weeks of programming can save you hours of planning

S
Speedgaming Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Den weg habe ich ebenfalls probiert, aber bei
contentDocument oder contentWindow
bekomme ich die Meldung:
IHTMLElement' does not contain a definition for 'contentWindow' and no accessible extension method 'contentWindow' accepting a first argument of type 'IHTMLElement' could be found (are you missing a using directive or an assembly reference?)

Wüsste aber nicht, was ich noch hinzufügen muss als reference, damit es funktioniert.
Die HTML Object Library und Internet Controls habe ich bereits aktiviert. Und eine Reference mit DOM oder Window habe ich nicht gefunden.