AppleScript haga clic en el botón (cromo)

Aquí está la etiqueta HTML del botón en el que me gustaría hacer clic usando AppleScript.

<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

Aquí está mi guión

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

Resultado:

valor que falta

¿Cómo puedo generar un clic?

Actualización: descubrí que esto está causando el bloqueo

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

Bloque HTML completo

<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>

Si no puedo hacer clic en el menú, ¿cómo puedo eliminar esto usando AppleScript?

¿Cuál es la URL de la página web con la que intenta interactuar?
Lamentablemente es una url interna

Respuestas (2)

document.getElementsByClassName('ng-scope')[0].click();es JavaScript perfectamente correcto, pero está dirigido a un <span>elemento (que generalmente no tiene click()eventos asociados), y no al <button>elemento (cuyo classatributo tiene valor "btn-primary").

Por lo tanto, su JavaScript debe apuntar a btn-primary, así:

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

(donde [0]posiblemente será necesario ajustar, dependiendo de cuántos otros elementos antes de este compartan su nombre de clase).

Alternativamente, si está seguro de que <span>el índice identifica el elemento correcto 0, entonces puede acceder a su elemento principal (que es el <button>) y emitirlo de click()esa manera:

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

Sin embargo, sin acceso a la página web en sí, no puedo probar esto rigurosamente, por lo que, aunque estoy seguro de que los principios de JavaScript son sólidos, es posible que deba hacer algunos ajustes por su cuenta para aislar el elemento utilizando el correcto nombre de clase e índice de matriz correcto.

Es posible que esté generando un clic que no está capturando.

  1. Insertó su marcado exacto con Chrome DevTools (a esta página)
  2. Se agregó onclick="alert('!');" al botón
  3. Ejecutó su secuencia de comandos exacta en el Editor de secuencias de comandos
  4. Consiguió "!" diálogo de alerta
Gracias por sus respuestas, no soy muy bueno con JS y HTML, ¿dónde debo agregar onclick="alert('!'); - así: (class="ng-scope">OK</span>onclick ="alerta('!'); ?
Como esto<button onclick="alert('This is an alert dialog');" class="btn"></button>