Programm, dass Buttons "drückt"?

3 Antworten

Im Vorfeld würde ich mir an deiner Stelle einmal genau anschauen, inwiefern es überhaupt notwendig ist, den direkten Buttonklick nachzubilden. Wenn es sich bspw. um einen Link handelt, der äußerlich wie ein Button gestyled wurde oder um den Absendebutton eines Formulars, kannst du die Daten womöglich auch gleich als HTTP Request verschicken. Dabei lohnt es sich, in der Entwicklerkonsole im Netzwerk-Tab sich die Request und Response Header anzuschauen. So ermittelst du schneller, ob die Daten, die von dir eingegeben wurden, vor Versand noch einmal bearbeitet wurden.

Gehe also auf die Seite und schau dir mit der Entwicklerkonsole des Browsers das Markup an. Ermittle, inwiefern deine zu reproduzierende Aktion wirklich ausgelöst wird. Wenn sich die Seite nach Buttonklick neu lädt, handelt es sich ganz sicher um einen vollständigen HTTP Request. Nun kann es nur noch sein, dass die Daten vor Versand gefiltert werden o.ä.. Definierte Event-Handler auf den Elementen geben dir z.B. nähere Auskunft.

Hier einmal 3 Beispiele:

<!-- Formular filtert die Werte, die abzusenden sind, du musst also das submit-Event des Formularelements auslösen -->
<form onsubmit="filter();">
  <input type="submit" value="yourbutton" />
</form>

<!-- Der Button sendet das Formular ab, daher kannst du einen HTTP Request ausführen oder das submit-Event des Formulars auslösen --> <form>
<input type="submit" value="yourbutton" /> </form>
<!-- Der Button handelt unabhaengig vom Formular, deshalb solltest du sein click-Event auslösen --> <form>
<input onclick="filter();" type="button" value="yourbutton" />
</form>

Sollte die Aktion kein Neuladen der Seite bewirken, handelt es sich um eine von JavaScript ausgeführte Aktion, die du nachbilden musst. Du musst in diesem Fall das click-Event des Buttons auslösen, sodass dieser mit seinem Handler die geforderte Aktion durchführen kann. Greife dafür über das DOM auf den Button zu.

Am besten gehst du über das DOM ("Document Object Model" - eine Darstellung der Webseite als Objekt mit Unterobjekten).

Wie der Button auf Ereignisse reagiert, steht in seinen Eventhandlern. Bei Mausklick heißt dieser Event "onclick" und wird wie eine gewöhnliche Eigenschaft des Tags notiert.

Das Click-Ereignis kann man auslösen, indem man die click()-Methode des Button-Objekts aufruft, vgl. https://www.google.de/search?q=python+html+dom+trigger+event&ie=utf-8&oe=utf-8

Woher ich das weiß:Berufserfahrung – Software-Entwickler
PWolff  29.04.2017, 19:05

Ergänzung zu "onclick" und sonstigen Event-Eigenschaften: Was der Button (oder ein anderes HTML-Element) tun soll, steht im "Wert" der "Eventhandler-Eigenschaft".

Beispiel:

<button type="button" id="testButton1" onclick="buttonClick('Test Nr. 1')">Test Nr. 1</button>

bedeutet, dass bei einem Klick auf den Button mit der ID "testButton1" in den Scripts zur Webseite nach der Funktion "buttonClick" gesucht wird, und wenn sie gefunden wird, diese Funktion mit dem "Parameter"/"Funktionsargument" 'Test Nr. 1' aufgerufen wird.

Hierbei ist es egal, ob der Benutzer mit der Maus auf den Button geklickt hat, ob er den Button mit der Tab-Taste ausgewählt und mit der Leertaste ausgelöst hat oder ob ein Drittprogramm die click()-Methode dieses Button-Objekts aufgerufen hat.

-----

Bei Formularen ("<form>"-Objekte) gibt es regelmäßig ein Element vom Typ "submit", z. B.

<button id="form1_submit" type="submit">Absenden</button>

hier ist es sinnvoller, die submit()-Methode des form-Objekts aufzurufen.

1