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?
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 class
atributo 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.
<button onclick="alert('This is an alert dialog');" class="btn"></button>
usuario3439894
Kevin