Entonces, ya conoce el método JavaScript para hacer clic en un elemento HTML utilizando su nombre de clase como selector:
document.getElementsByClassName('classnamehere')[0].click();
dónde [0]
indica 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, tratar de usar un elemento id
, que proporciona un atributo único por el cual 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 ser dirigido a un determinado tab
en Google Chrome . No puedes enviar el comando a un window
o la application
objeto. Asi que:
tell application "Google Chrome" to ¬
execute javascript js
lanzará un error (incluso en el supuesto de que haya 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 esta forma:
tell application "Google Chrome" to tell front window to ¬
(execute javascript js) in front tab
En cada uno de estos comandos, la javascript
Se le dice que ejecute en una específica tab
.
Aún no has especificado que "detallado" se refiere a, y cuando lo haga, puedo actualizar esta respuesta en consecuencia. Trabajando en el supuesto de que es una class
nombre o un id
de un elemento HTML, puedes usar una de las expresiones en la parte superior y conectarlo directamente en los ejemplos de código que te di. Entonces, podrías usar el método de JavaScript getElementsByClassName
, que tomaría esta forma:
document.getElementsByClassName('detailed')[0].click();
dónde [0]
podría terminar siendo cambiado a [1]
, [2]
, etc. dependiendo de cuantos otros elementos tenga este nombre de clase. Lo que entonces haría sería definir mi variable AppleScript js
para mantener el comando de JavaScript para mí:
set js to "document.getElementsByClassName('detailed')[0].click();"
entonces dile al active tab
en Cromo para ejecutarlo:
tell application "Google Chrome"
tell active tab of window 1 to ¬
execute javascript js
end tell
los execute
comando 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