Verwendung von Javascript | Applescript zum Klicken auf die Schaltfläche in Safari

Mir ist klar, dass es mehrere Threads zu diesem Thema gibt, die alle sehr spezifisch für bestimmte Websites sind. Mein Hintergrund liegt in Python, nicht in Javascript oder Applescript, und ich bin verwirrt darüber, wie ich diese Aktion ausführen soll.

Ich habe mehrere Skripte gesehen, die diese Aktion ausführen, nämlich:

tell application "Safari"

activate

do JavaScript "document.forms['search']['order_list_search_batch'].click()"

end tell

Was ist die beste Methode, um dies auszuleben?

Ich bin verwirrt, was dazwischen geht"document.forms[WHATGOESHERE?].click()"

Ich versuche, auf http://rna.tbi.univie.ac.at/cgi-bin/RNAfold.cgi auf die Schaltfläche Fortfahren zu klicken .

Ich ging zu "Inspect Element" auf der Schaltfläche "Proceed" und erhielt diesen Code:

<input style="cursor: pointer;" value="" name="proceed" class="proceed" onmouseover="this.style.cursor=&quot;pointer&quot;" type="submit">

Woher weiß ich, was ich in das Skript einfügen muss, um auf diese Schaltfläche zu klicken, basierend auf den Ergebnissen von Inspect Element? Ich möchte verstehen, damit ich diese Methode in mehr als einem Fall anwenden kann. Es gibt keinen href-Link, zu dem es geht.

Geben Sie hier die Bildbeschreibung ein

Aktueller Code funktioniert nicht

tell application "Safari" to activate
open location "http://rna.tbi.univie.ac.at/cgi-bin/RNAfold.cgi"
delay 3
tell application "Safari" to do JavaScript "document.forms[0].elements[document.forms[0].elements.length-1].click()"
haben Sie tatsächlich meine Bearbeitung der letzten Frage ( stackoverflow.com/a/21217563/261305 ) darüber gesehen, wie Sie auf die Schaltfläche „Fortfahren“ klicken. Außerdem habe ich hier eine Antwort gegeben, die etwas Licht auf das werfen sollte, was Sie zu tun versuchen.

Antworten (2)

Für eine Minute dachte ich, du stellst wieder dieselbe Frage wie beim letzten Mal.

Aber stellen Sie fest, dass Sie jetzt wissen möchten, wie Sie Inspect Element verwenden, um Ihren eigenen Code zu erstellen.

In dem Beispiel, das Sie geben:document.forms[WHATGOESHERE?].click()

Das WHATGOESHERE wäre der Formularname.

i.e document.forms['theFormName'].click()

Ihre Website hat in ihrer Weisheit das Formular " Formular " genannt.

<form method="post" action="/cgi-bin/RNAfold.cgi" enctype="multipart/form-data" name="form"> <input type="hidden" name="PAGE" value="2">

i.e document.forms['form'].click()

Dies würde jedoch nicht auf die Eingabetaste klicken

Sie können die Funktion submit () mit Punktsyntax am Ende verwenden:

document.forms['form'].submit()

Safari-Applescript:do JavaScript "document.forms['form'].submit()"


Auch

In dem Code, den ich Ihnen in Ihrer letzten Frage zur Verfügung gestellt habe . Ich benutzte:

tell document 1

        do JavaScript "document.getElementsByClassName('proceed')[0].click()"

    end tell

Dies verwendet den Klassennamen fortfahren des Formulareingabeelements, das hier zu sehen ist: class= " fortfahren"

<input value="" name="proceed" type="submit" class="proceed" onmouseover="this.style.cursor=&quot;pointer&quot;" style="cursor: pointer;">

Das getElementsByClassName('proceed')[0]macht genau das, was es verspricht.

Es erhält die Elemente nach ClassName ' fortfahren '.

Die [0] bedeutet, dass es Ihnen das erste Element in seinen Ergebnissen aus dem Array gibt, das zurückgegeben würde. Das Array wird von 0-9 gezählt. Das erste Element wäre also Element 0.


Ein guter Ort, um funktionierende Beispiele und Informationen über Javascript zu bekommen, ist www.w3schools.com. Auf der Startseite haben sie Links zu ihren HTML- und Javascript-Beispielen und Tutorials. Die Elemente der HTML-Dom- und Javascript-Funktionen sind für einen einfachen Zugriff aufgelistet.

Trotz der Tatsache, dass diese Website beschissenen Code hat (zu wenige IDs), so etwas wie:

tell application "Safari"
    activate
    open location "http://rna.tbi.univie.ac.at/cgi-bin/RNAfold.cgi"
    delay 3
    do JavaScript "document.forms['form'].submit()" in current tab of window 1
end tell

sollte arbeiten.

Es sucht nach dem letzten Element des ersten Formulars auf der Seite.


Nur damit du es weißt:

document.forms['search']['order_list_search_batch'].click()

Diese Zeile macht folgendes:

  • Es sieht auf der Webseite aus
  • Für ein Formular mitid="search"
  • Innerhalb dieses Formulars sucht es nach einem untergeordneten Knoten mit id=order_list_search_batch.
  • Sobald dieses Objekt gefunden wurde, führt es einen Klick darauf aus.
Ich konnte es nicht zum Laufen bringen, aber ich habe meinen Code am Ende der Frage eingefügt. danke, dass du erklärt hast, was dieser andere Code tat!
Mein Fehler, ich habe angedeutet, dass Sie die Methode click () hinzufügen müssen. Ich habe meine Antwort bearbeitet!
Ich weiß nicht, warum ich .click() nicht darin aufgenommen habe, weil ich es dort eingefügt habe. Ist etwas mit meinem Applescript los, das es nicht funktionieren lässt? @matthieuriegler
Mit meiner neuen Bearbeitung sollte es funktionieren.