Applescript haga clic en un botón

1

Es posible hacer clic en el botón "detallado" con AppleScript (Google Chrome)

for="7cd6f428-1are-41f2-9054-c452d7fe242-view-selector-e5f5de50-634a-45bc-bf30-98e2a64676c">Detailed

Por lo general, usaría esto para un clic

 "document.getElementsByName('clasenamehere')[0].click();"

pero en esta situación no estoy seguro de cómo proceder

actualización: actualicé mi respuesta, ya que no me di cuenta de que el editor de texto de askdifferent ocultó el código

eso es lo que suelo usar:

tell application "Google Chrome"
    tell tab 4 of window 1 to set myClickingbutton to execute javascript "document.getElementById('Clasenamehere').click();
"
end tell
    
pregunta Kevin 23.03.2018 - 14:30

1 respuesta

1

Así que ya conoces el método JavaScript para hacer clic en un elemento HTML usando su nombre de clase como selector:

document.getElementsByClassName('classnamehere')[0].click();

donde [0] denota el primer elemento en la matriz de elementos, todos los cuales comparten el mismo nombre de clase. A menudo, es mejor, al menos en mi mente, intentar usar el elemento id , que proporciona un atributo único para seleccionar un elemento:

document.getElementById('idnamehere').click();

Para ejecutar este código desde Google Chrome a través de AppleScript, la forma general se ve así:

    set js to "document.getElementsByClassName('classnamehere')[0].click();"

    tell application "Google Chrome" to tell ¬
        the front window to tell ¬
        the active tab to ¬
        set jsResult to execute javascript js

La característica importante sobre execute javascript es que debe dirigirse a un tab específico en Google Chrome . No puede enviar el comando a un objeto window o application . Entonces:

    tell application "Google Chrome" to ¬
        execute javascript js

producirá un error (incluso en el supuesto de que hayas definido js ).

La sintaxis también puede tomar esta forma:

    tell application "Google Chrome" to tell front window to ¬
        set jsResult to execute of tab 1 javascript js

o este formulario:

    tell application "Google Chrome" to tell front window to ¬
        (execute javascript js) in front tab

En cada uno de estos comandos, se indica a javascript que se ejecute en un tab específico.

Aún no ha especificado a qué se refiere "detallado" , y cuando lo haga, puedo actualizar esta respuesta en consecuencia. Suponiendo que es un nombre class o un id de un elemento HTML, puede usar una de las expresiones en la parte superior y conectarlo directamente en los ejemplos de código que le proporcioné. Por lo tanto, puede utilizar el método de JavaScript getElementsByClassName , que tomaría esta forma:

document.getElementsByClassName('detailed')[0].click();

donde [0] podría cambiarse a [1] , [2] , etc., dependiendo de cuántos otros elementos tengan este nombre de clase. Lo que luego haría sería definir mi variable AppleScript js para que contenga el comando de JavaScript para mí:

    set js to "document.getElementsByClassName('detailed')[0].click();"

luego dile a active tab en Chrome que lo ejecute:

    tell application "Google Chrome"
        tell active tab of window 1 to ¬
            execute javascript js
    end tell

El comando execute siempre devolverá un valor, incluso si es solo una cadena vacía. Por lo tanto, si lo desea, puede asignar ese valor a una variable en AppleScript para usar más adelante en su script:

    set jsResult to the result

O, más directamente:

    set jsResult to execute javascript js
    
respondido por el CJK 23.03.2018 - 18:18

Lea otras preguntas en las etiquetas