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?
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 class
Attribut den Wert hat "btn-primary"
).
Daher muss Ihr JavaScript btn-primary
wie 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.
<button onclick="alert('This is an alert dialog');" class="btn"></button>
Benutzer3439894
Kevin