AppleScript, haga clic en el botón (chrome)

1

Aquí está la etiqueta HTML del botón en el que me gustaría hacer clic con 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 script

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 faltante

¿Cómo puedo generar un clic?

Actualización: encontré 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?

    
pregunta Kevin 30.04.2018 - 16:11

2 respuestas

1

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

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

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

(donde posiblemente sea necesario ajustar [0] , dependiendo de cuántos otros elementos antes de que éste comparta su nombre de clase).

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

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

Sin el acceso a la página web en sí, sin embargo, no puedo probar esto rigurosamente, así que, aunque estoy seguro de que los principios de JavaScript son correctos, es posible que necesites hacer algunos ajustes para aislar el elemento. utilizando el nombre de clase correcto y el índice de matriz correcto.

    
respondido por el CJK 05.05.2018 - 19:24
1

Puede estar generando un clic que no estás capturando.

  1. Insertó su marca exacta con Chrome DevTools (en 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. tengo "!" diálogo de alerta
respondido por el Karl Piper 01.05.2018 - 09:38

Lea otras preguntas en las etiquetas