Applescript-Klick auf eine Schaltfläche

Ist es möglich, den Button "detailliert" mit AppleScript (Google Chrome) anzuklicken?

for="7cd6f428-1are-41f2-9054-c452d7fe242-view-selector-e5f5de50-634a-45bc-bf30-98e2a64676cc">Detailliert

Ich würde dies normalerweise für einen Klick verwenden

 "document.getElementsByName('clasenamehere')[0].click();"

aber in dieser Situation bin ich mir nicht sicher, wie ich weiter vorgehen soll

Update: Ich habe meine Antwort aktualisiert, da ich nicht bemerkt habe, dass der Code vom askdifferent Texteditor ausgeblendet wurde

das was ich normalerweise verwende:

tell application "Google Chrome"
    tell tab 4 of window 1 to set myClickingbutton to execute javascript "document.getElementById('Clasenamehere').click();
"
end tell
Könnten Sie ein Beispiel des gesamten Skripts bereitstellen?
Führen Sie das JavaScript "document.getElementsByName('namehere')[0].click();" von Registerkarte 1 des vorderen Fensters aus.
Wie lautet die URL der Seite, auf der Sie die Schaltfläche ausführen möchten, und um welche Schaltfläche handelt es sich?

Antworten (1)

Sie kennen also bereits die JavaScript-Methode zum Klicken auf ein HTML-Element mit seinem Klassennamen als Selektor:

document.getElementsByClassName('classnamehere')[0].click();

wobei [0]das erste Element im Array von Elementen bezeichnet wird, die alle den gleichen Klassennamen haben. Oft ist es besser – zumindest meiner Meinung nach – zu versuchen, ein Element zu verwenden id, das ein eindeutiges Attribut bereitstellt, mit dem ein Element ausgewählt werden kann:

document.getElementById('idnamehere').click();

Um diesen Code von Google Chrome über AppleScript auszuführen , sieht das allgemeine Formular so aus:

    set js to "document.getElementsByClassName('classnamehere')[0].click();"

    tell application "Google Chrome" to tell ¬
        the front window to tell ¬
        the active tab to ¬
        set jsResult to execute javascript js

Das wichtige Merkmal ist, dass es an eine bestimmte in Google Chromeexecute javascript geleitet werden muss . Sie können den Befehl nicht an ein oder das Objekt senden. So:tabwindowapplication

    tell application "Google Chrome" to ¬
        execute javascript js

wird einen Fehler auslösen (sogar unter der Annahme, dass Sie definiert hatten js).

Die Syntax kann auch diese Form annehmen:

    tell application "Google Chrome" to tell front window to ¬
        set jsResult to execute of tab 1 javascript js

oder dieses Formular:

    tell application "Google Chrome" to tell front window to ¬
        (execute javascript js) in front tab

In jedem dieser Befehle javascriptwird der angewiesen, in einer bestimmten tab.

Sie haben noch nicht angegeben, worauf sich "detailliert" bezieht, und wenn Sie dies tun, kann ich diese Antwort entsprechend aktualisieren. Unter der Annahme, dass es sich entweder um einen classNamen oder idum ein HTML-Element handelt, können Sie einen der Ausdrücke oben verwenden und ihn direkt in die Codebeispiele einfügen, die ich Ihnen gegeben habe. Sie könnten also die JavaScript-Methode verwenden getElementsByClassName, die diese Form annehmen würde:

document.getElementsByClassName('detailed')[0].click();

where [0]könnte am Ende in [1], [2], usw. geändert werden, je nachdem, wie viele andere Elemente diesen Klassennamen haben. Was ich dann tun würde, ist, meine AppleScript-Variable so zu definieren, jsdass sie den JavaScript-Befehl für mich enthält:

    set js to "document.getElementsByClassName('detailed')[0].click();"

Sagen Sie dann active tabin Chrome , dass es ausgeführt werden soll:

    tell application "Google Chrome"
        tell active tab of window 1 to ¬
            execute javascript js
    end tell

Der executeBefehl gibt immer einen Wert zurück, auch wenn es nur ein leerer String ist. Wenn Sie möchten, können Sie diesen Wert daher einer Variablen in AppleScript zuweisen, um sie später in Ihrem Skript zu verwenden:

    set jsResult to the result

Oder direkter:

    set jsResult to execute javascript js
Vielen Dank für die ausführliche Antwort. Ich habe meine Frage aktualisiert, weil mir nicht klar war, dass der Schaltflächenname ausgeblendet war. Ich habe Ihre Antwort jedoch genehmigt, da ich denke, dass es aufgrund des teilweise verschlüsselten Namens keine Lösung für meine Anfrage gibt und auch wenn meine normalerweise klickgeschnittene Arbeit, Ihre scheint viel sauberer und angemessener zu sein
Danke. Wenn Sie bereit sind, die URL zu teilen, könnte ich einen Blick darauf werfen und sehen, ob es eine Möglichkeit gibt, dies zu tun.
Gibt es einen Code, um die Maus einfach auf dieses HTML-Element zu bewegen/zu bewegen, anstatt zu klicken? Ich brauche wirklich eine Möglichkeit, die Maus einfach auf das HTML-Element zu bewegen, anstatt zu klicken! Danke.
@DuyDuy Sie müssen das als Frage auf dieser Seite posten. Aber was möchten Sie erreichen, indem Sie die Maus über ein HTML-Element bewegen/bewegen? Das ist das Erste, was man wissen muss, um helfen zu können.
Lieber @CJK, ich möchte einige Bilder herunterladen, deren URL nur angezeigt wird, wenn ich mit der Maus über einige Schaltflächen fahre. (dh shopee.ph/… beachten Sie, dass die „schwarze“ Variante des Produkts deaktiviert ist und nicht angeklickt werden kann, wenn Sie mit der Maus darüber fahren, erscheint das Bild). Ich habe eins mit Keyboard Maestro gemacht, aber es ist langsam. Es wäre perfekt, wenn ich es mit Java machen könnte, aber ich weiß nichts über Java, bitte geben Sie einige Ratschläge, ich weiß nicht einmal, wo ich Ihr Skript oben einfügen soll. Vielen Dank