Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Klick auf Javascript-Button einer Website auslösen

Klick auf Javascript-Button einer Website auslösen 7 Jahre 3 Monate her #26

  • Atlanta
  • Atlantas Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 5
  • Karma: 0
Hallo allerseits,

ich habe folgendes kleines Problem:

Ich möchte einen Klick auf einen Javascript-Button einer Website auslösen. Ich habe es versucht, wie in diesem Artikel Webbrowser automatisch per Code steuern / Klicken lassen
zu bewerkstelligen, leider funktioniert es nicht, da es den ID nicht annimt. Gibt es eine möglichkeit, einen Klick darauf zu simulieren?

Hier ist der Quellcode der Website:
<div id="searchModuleContainer"><div id="searchModulelanding" class="flashModule" style="width: 300px;"></div>
<div id="searchSpacelanding" style="height:70px; width: 300px; margin: 0 0 0 6px;"></div>
<div class="advancedPermissionsLink hidden" id="advancedPermissionsLinklanding"><a onclick="searchers.doAdvancedPermissionsCheck('searchMovielanding');">Dieses Feld nicht mehr anzeigen?</a></div>
<script type="text/javascript">
searchers.load({movieId:'searchMovielanding',moduleId:'searchModulelanding',spaceId:'searchSpacelanding',advancedPermissionsLink:'advancedPermissionsLinklanding',flashObj:'midomiLandingVoiceSearch.swf',width:'300',height:'70',flashVars:{sid:'9gch182cug8kapcanfv4reiqg7',fromAction:'landing'}});
</script>
</div>

Vielen Dank im Voraus!

Aw: Klick auf Javascript-Button einer Website auslösen 7 Jahre 3 Monate her #27

  • Jonny132
  • Jonny132s Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 151
  • Dank erhalten: 3
  • Karma: 4
Hallo Atlanta,

leider ist in dem von dir geposteten Quelltext kein Link/Button erkennbar der per Code geklickt werden sollte, ausser das "Dieses Feld nicht mehr anzeigen?" - meinst du den Link?

Villeicht kannst du schreiben um welche Website es sich handelt, dann könnte ich mir das genauer anschauen.
Ansonsten kann ich nur raten. Das JavaScript kann natürlich den Seitenaufbau/Quelltext im nachhinein ändern. Vielleicht sieht man per Firefox/Firebug mehr und du bekommst die richtige ID die du ansprechen kannst.

sg

Aw: Klick auf Javascript-Button einer Website auslösen 7 Jahre 3 Monate her #28

  • Atlanta
  • Atlantas Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 5
  • Karma: 0
Also, bei der Website handelt es sich um "www.midomi.com".

Der große Button (Click and Sing or Hum) soll gedrückt werden. Ich habe bereits mithilfe von Firefox versucht, den Quelltext auseinanderzunehmen, allerdings ohne Erfolg. Es ist zwar eine ID vorhanden, allerdings reagiert der Button auf diese ID nicht.

Aw: Klick auf Javascript-Button einer Website auslösen 7 Jahre 3 Monate her #29

  • Jonny132
  • Jonny132s Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 151
  • Dank erhalten: 3
  • Karma: 4
Das Problem ist, dass der Button ein Flash Objekt ist (erkennbar bei rechtsklick auf den Button) somit ist dieser leider nicht mit dieser Methode klickbar/ansprechbar.
Vielleicht könntest du ja einen Mausklick simulieren und somit die Aufnahme starten.

sg

Aw: Klick auf Javascript-Button einer Website auslösen 7 Jahre 3 Monate her #30

  • Atlanta
  • Atlantas Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 5
  • Karma: 0
Das habe ich auch schon versucht. Mit deiner Methode funktioniert es auch, allerdings möchte ich nicht, dass sich dabei der Mauszeiger bewegt, da ich das Programm auch im Hintergrund laufen lassen wollte. Also habe ich das hier versucht:
int x = 500;
int y = 180;
IntPtr handle = webBrowser1.Handle;
StringBuilder className = new StringBuilder(100);
while (className.ToString() != "Internet Explorer_Server")
{
     handle = GetWindow(handle, 5);
     GetClassName(handle, className, className.Capacity);
}
IntPtr lParam = (IntPtr)((y << 16) | x);
IntPtr wParam = IntPtr.Zero;
const uint downCode = 0x201;
const uint upCode = 0x202;
SendMessage(handle, downCode, wParam, lParam);
SendMessage(handle, upCode, wParam, lParam);

Und das hier:
Point p = new Point(60, 60);
            HtmlElement ele = webBrowser1.Document.GetElementFromPoint(p);
            ele.InvokeMember("click");

Beide Methoden funktionieren wunderbar auf allen möglichen Objekten und Bildern einer Website, allerdings nicht auf diesem Flashobjekt.
Man kann zwar erkennen, dass auf das Objekt geklickt wurde (die Farbe verändert sich kurz), aber es passiert nichts.

Aw: Klick auf Javascript-Button einer Website auslösen 7 Jahre 3 Monate her #31

  • Jonny132
  • Jonny132s Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 151
  • Dank erhalten: 3
  • Karma: 4
Wie gesagt, das Flash-Objekt kannst du so nicht ansprechen.
Als Workaround könntest du
  • aktuelle Mausposition zwischenspeichern
  • Form anzeigen in nichtsichtbaren (-)Bereich
  • Klick auf den Button sumulieren
  • Form wieder unsichtbar schalten
  • Mauszeiger wieder zurücksetzen auf Anfangsposition

ist aber nur ne Idee ;)
Mahlzeit

Aw: Klick auf Javascript-Button einer Website auslösen 7 Jahre 3 Monate her #32

  • Atlanta
  • Atlantas Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 5
  • Karma: 0
Die Idee mit der Abfolge der Ereignisse (Form sichtbar und wieder unsichtbar machen) ist gar nicht schlecht! Ich werde es so einmal ausprobieren.

Kennst du eine Möglichkeit, ein Flash-Objekt anzusprechen? Ich habe es auch schon mit "Document.InvokeScript" versucht, leider ebenfalls ohne Erflog, da dies nur mit Javascript-Funktionen funktioniert.

Trotzdem schon einmal vielen Dank für deine Hilfe!!!

Aw: Klick auf Javascript-Button einer Website auslösen 7 Jahre 3 Monate her #33

  • Jonny132
  • Jonny132s Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 151
  • Dank erhalten: 3
  • Karma: 4
Eventuell ist es möglich das Control direkt per referenzierung der ashockwaveflash.dll auf der Form einzubinden und zu klicken. Konnte das bisher jedoch nicht testen.
Gestern kam mir noch die Idee, die Form einfach Unsichtbar zu machen indem du .Opacity auf 100% stellst und somit die Form komplett nicht sichtbar ist, aber trotzdem 'physisch' auf den Desktop. So kannst du dir das verschieben in nichtsichtbare Bereiche ersparen und dürfte nicht so fehleranfällig sein.

Tut mir leid, dass ich nicht mehr helfen kann. Vielleicht finde ich mal etwas Zeit um mir die Sache genauer anschauen zu können ;)

sg

Aw: Klick auf Javascript-Button einer Website auslösen 7 Jahre 3 Monate her #34

  • Atlanta
  • Atlantas Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 5
  • Karma: 0
Ich werde es wohl mit deinem Vorschlag umsetzen:
aktuelle Mausposition zwischenspeichern
Form anzeigen in nichtsichtbaren (-)Bereich
Klick auf den Button sumulieren
Form wieder unsichtbar schalten
Mauszeiger wieder zurücksetzen auf Anfangsposition

Dazu werde ich außerdem noch das WebBrowser-Control von unsichtbar auf sichtbar stellen und die Location-Eigenschaft ändern, sodass es sich im sichtbaren Bereich der Form befindet.
Das werde ich nach Ausführen der Aktion wieder rückgänig machen, sodass der Benutzer es nicht mitbekommen sollte, da es nur wenige Millisekunden dauert.

Viele Grüße und danke für deine Vorschläge
Max
Ladezeit der Seite: 0.193 Sekunden