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="pointer"" 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.
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()"
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="pointer"" 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:
id="search"
id=order_list_search_batch
.
Markhunte