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