AppleScript-Klick auf Schaltfläche (Chrom)

Hier ist das HTML-Tag der Schaltfläche, auf die ich mit AppleScript klicken möchte.

<button class="btn btn-primary" autofocus="" ng-click="ok()" tabindex="0"><!-- ngIf: !isTranslate --><span ng-if="!isTranslate" class="ng-scope">OK</span><!-- end ngIf: !isTranslate --> <!-- ngIf: isTranslate --></button

Hier ist mein Skript

tell application "Google Chrome"
    tell tab 2 of window 1 to set clickOnMyButton to execute javascript "document.getElementsByClassName('ng-scope')[0].click();"
end tell

Ergebnis:

fehlender Wert

Wie kann ich einen Klick generieren?

Update: Ich habe festgestellt, dass dies die Blockierung verursacht

 style="z-index: 1050; display: block;"

Vollständiger HTML-Block

<div tabindex="-1" role="dialog" class="modal fade ng-isolate-scope in" ng-class="{in: animate}" ng-style="{'z-index': 1050 + index*10, display: 'block'}" ng-click="close($event)" modal-window="" size="sm" index="0" animate="animate" style="z-index: 1050; display: block;">
    <div class="modal-dialog modal-sm" ng-class="{'modal-sm': size == 'sm', 'modal-lg': size == 'lg'}"><div class="modal-content" modal-transclude=""><div class="modal-header ng-scope"><span class="information-icon glyphicon glyphicon-info-sign"></span> <!-- ngIf: !isTranslate --><span class="information-header ng-scope" ng-if="!isTranslate">Information</span><!-- end ngIf: !isTranslate --> <!-- ngIf: isTranslate --></div><div class="ng-scope"><span class="glyphicon modal-body glyphicon-menu-down" ng-class="{ 'glyphicon-menu-down' : !errorDetails, 'glyphicon-menu-right' : errorDetails}" ng-click="errorDetails = !errorDetails" tabindex="0"></span><!-- ngIf: !isTranslate --><span ng-if="!isTranslate" class="ng-scope">Details</span><!-- end ngIf: !isTranslate --> <!-- ngIf: isTranslate --></div><!-- ngIf: !errorBullets --><div ng-if="!errorBullets" collapse="errorDetails" class="ng-scope collapse in" style="height: auto;"><ul><li class="ng-binding">Please provide Purchase data</li></ul></div><!-- end ngIf: !errorBullets --><!-- ngIf: errorBullets --><div class="modal-footer ng-scope"><button class="btn btn-primary" autofocus="" ng-click="ok()" tabindex="0"><!-- ngIf: !isTranslate --><span ng-if="!isTranslate" class="ng-scope">OK</span><!-- end ngIf: !isTranslate --> <!-- ngIf: isTranslate --></button></div></div></div>
</div>

Wenn ich nicht auf das Menü klicken kann, wie kann ich dies mit AppleScript entfernen?

Wie lautet die URL der Webseite, mit der Sie interagieren möchten?
Es ist leider eine interne URL

Antworten (2)

document.getElementsByClassName('ng-scope')[0].click();ist vollkommen in Ordnung JavaScript, aber es zielt auf ein <span>Element ab (dem normalerweise keine click()Ereignisse zugeordnet sind) und nicht auf das <button>Element (dessen classAttribut den Wert hat "btn-primary").

Daher muss Ihr JavaScript btn-primarywie folgt auf zielen:

document.getElementsByClassName('btn-primary')[0].click();

(wo [0]muss ggf. angepasst werden, je nachdem wie viele andere Elemente vor diesem den Klassennamen teilen).

Wenn Sie sich sicher sind, dass das richtige <span>Element durch den Index identifiziert wird 0, können Sie alternativ auf sein übergeordnetes Element (das ist <button>) zugreifen und das click()auf diese Weise ausgeben:

document.getElementsByClassName('ng-scope')[0].parentElement.click();

Ohne Zugriff auf die Webseite selbst kann ich dies jedoch nicht rigoros testen. Obwohl ich zuversichtlich bin, dass die JavaScript-Prinzipien solide sind, müssen Sie möglicherweise einige eigene Anpassungen vornehmen, um das Element zu isolieren, indem Sie das richtige verwenden Klassenname und korrekter Array-Index.

Möglicherweise wird ein Klick generiert, den Sie nicht erfassen.

  1. Genaues Markup mit Chrome DevTools eingefügt (zu dieser Seite)
  2. onclick="alert('!');" hinzugefügt zum Knopf
  3. Führen Sie Ihr genaues Skript im Skripteditor aus
  4. Bekommen "!" Warndialog
Vielen Dank für Ihre Antworten, ich bin nicht sehr gut mit JS und HTML, wo sollte ich onclick="alert('!'); hinzufügen - so: (class="ng-scope">OK</span>onclick ="Alarm('!'); ?
So was<button onclick="alert('This is an alert dialog');" class="btn"></button>