¿Es posible hacer clic en el botón "detallado" usando AppleScript (Google Chrome)
for="7cd6f428-1are-41f2-9054-c452d7fe242-view-selector-e5f5de50-634a-45bc-bf30-98e2a64676cc">Detallado
Usualmente 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 porque no me di cuenta de que el código estaba oculto por el editor de texto ask different
que 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
Entonces ya conoce el método de JavaScript para hacer clic en un elemento HTML usando su nombre de clase como selector:
document.getElementsByClassName('classnamehere')[0].click();
donde [0]
se 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 opinión, intentar 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, el formulario 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 al respecto execute javascript
es que debe ser dirigido a un sitio específico tab
en Google Chrome . No puede enviar el comando a un window
o al application
objeto. Entonces:
tell application "Google Chrome" to ¬
execute javascript js
arrojará 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 este formulario:
tell application "Google Chrome" to tell front window to ¬
(execute javascript js) in front tab
En cada uno de estos comandos, se javascript
le indica que se ejecute en un archivo tab
.
Todavía no ha especificado a qué se refiere "detallado" , y cuando lo haga, puedo actualizar esta respuesta en consecuencia. Suponiendo que se trata de un class
nombre o id
de un elemento HTML, puede usar una de las expresiones en la parte superior y conectarla directamente a los ejemplos de código que le di. Entonces, podría usar el método JavaScript getElementsByClassName
, que tomaría esta forma:
document.getElementsByClassName('detailed')[0].click();
donde [0]
podría terminar cambiando a [1]
, [2]
, etc. dependiendo de cuántos otros elementos tengan este nombre de clase. Lo que haría entonces sería definir mi variable AppleScript js
para que contenga el comando de JavaScript por mí:
set js to "document.getElementsByClassName('detailed')[0].click();"
luego dile a active tab
Chrome que lo ejecute:
tell application "Google Chrome"
tell active tab of window 1 to ¬
execute javascript js
end tell
El 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
conducir
Kevin
usuario3439894