WebBrowser-Steuerelement reagiert nicht auf InvokeMember ("Klicken")

Nachdem ich 5 Tage meines Lebens verbracht habe, bin ich dabei, dies aufzugeben, aber konsultiere die Experten vorher einmal.

Ich habe ein WebBrowser-Steuerelement, mit dem eine Webseite geladen und deren Inhalt programmgesteuert gescrappt wird. Durch Klicken auf ein bestimmtes Menüelement auf der Seite wird das Dialogfeld "Datei öffnen" geöffnet, wenn dies in IE (oder einem anderen Browser) ausgeführt wird. Aber klicken Sie auf die gleiche Schaltfläche im WebBrowser-Steuerelement mitInvokeMember() anscheinend macht nichts egal was. Ich habe mehrere SO-Fragen durchlaufen, wie zBrowser-Funktionen einstellen um sicherzustellen, dass sich mein Steuerelement genau wie der Internet Explorer verhält, dies ist jedoch nicht gelungen.

Ich habe die eigentliche Javascript-Funktion, die der Button hinter den Kulissen ausführt, überprüft und manuell aufgerufenHtmlDocument.InvokeScript() konnte dies aber nicht tun, da die zugrunde liegende Funktion ein Argument von annimmtMouseEvent Typ (das Click-Ereignis tatsächlich) und ich bin nicht sicher, wie ich das Objekt in C # erstellen kann.

Ein anderer Ansatz bestand darin, den Fokus auf diese bestimmte Schaltfläche zu legen und es dann zu versuchenSendKeysDies funktioniert jedoch nicht, da das WebBrowser-Steuerelement nicht sichtbar ist. Es ist nur eine In-Memory-Instanz. Genauer gesagt der WebBrowser

BEARBEITEN

Auf Anfrage eines Lesers ist hier der einfache Code, den ich verwende, um das Element zu finden:

var MyButton = WB.Document.GetElementById("processfilelink");

processfilelink ist ein Anker-Tag (<a href='#' ... >) und ich habe bestätigt, dass dieses Element tatsächlich im Hauptteil des Dokuments vorhanden ist. Die Webseite verwendet jQuery'sdelegate Funktion zum Binden dieses Ankersclick Ereignis an die Zielfunktion. Nachdem ich den Knopf gefunden habe, rufe ich einfach anInvokeMember() so was:

MyButton.InvokeMember("click");

Hinweis: Im Seitencode werden auch Bindungen für Maus-Down-, Maus-Up- und Fokus-Ereignisse angezeigt. Ich erwarte, dass all diese Ereignisse automatisch ausgelöst werden, wenn man sie aufruftclick, aber nur um sicher zu gehen, fügte ich hinzuInvokeMember ruft auch zu diesen Ereignissen auf. Die Ergebnisse sind nicht besser.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage