Tengo un archivo .scpt de AppleScript que está asignado a un método abreviado de teclado a través de la aplicación de terceros, FastScripts.
El script abre una URL específica, fija y predeterminada en una nueva pestaña de Google Chrome. Esta nueva pestaña se inserta inmediatamente después de la pestaña de Google Chrome actualmente abierta (si Google Chrome está abierto actualmente).
Aquí está este código:
activate application "Google Chrome"
set myURL to "https://weather.com/weather/hourbyhour/l/12345"
tell application "Google Chrome"
activate
tell front window to make new tab at after (get active tab) with properties {URL:myURL}
end tell
Una operación adicional que me gustaría implementar en este script es hacer que la barra de desplazamiento de la página web abierta en Chrome se mueva automáticamente un poco hacia abajo. Al igual que la variable URL, la cantidad de desplazamiento es específica, fija y predeterminada.
No sé la forma correcta de articular una cantidad de desplazamiento por escrito (y, por supuesto, varía según la resolución de la pantalla, el tamaño del monitor, el tamaño de la ventana y la configuración de zoom establecida en Chrome para esa página determinada), pero yo Puedo decir que, para mi entorno único, está alrededor del 15 % hacia abajo en la página. Para aclarar el significado de esta descripción, "100% hacia abajo en la página" estaría en la posición más baja de la barra de desplazamiento (la barra de desplazamiento se puede configurar en esta posición presionando ⌘ command + ↓).
La cantidad de desplazamiento exacta que deseo probablemente no sea particularmente relevante en el contexto de mi pregunta (considerando las muchas variables antes mencionadas que pueden afectar la cantidad de desplazamiento). Simplemente es importante tener en cuenta que la cantidad de desplazamiento es una figura personalizada, en lugar de estar en la parte superior o inferior de la página (ya que uno puede usar el atajo de teclado respectivo a través de AppleScript para lograr desplazarse fácilmente a estas dos ubicaciones key code
) .
Espero que cualquier solución sugerida me ofrezca la capacidad de afinar y ajustar la ubicación deseada de la barra de desplazamiento, de modo que pueda acercarme lo más posible a donde me desplazaría manualmente.
Puede usar JavaScript para establecer la cantidad de desplazamiento.
Para ajustar el desplazamiento con un porcentaje definido:
set myURL to "https://weather.com/weather/hourbyhour/l/12345"
set scrollAmount to "16" --- % down the page
tell application "Google Chrome"
activate
tell front window to set curTab to make new tab at after (get active tab) with properties {URL:myURL}
tell curTab
repeat while (loading)
delay 1
end repeat
-- set the vertical scroll
execute javascript "h=document.documentElement.scrollHeight-document.documentElement.clientHeight; window.scrollTo(0,h*" & scrollAmount & "/100)"
end tell
end tell
Para ajustar el desplazamiento vertical en la parte superior de un elemento de la página, el script puede obtener el elemento con document.getElementById('twc-scrollabe')
twc-scrollabe como identificador de la tabla.
Después de eso, JavaScript usa un bucle para obtener la parte superior de la tabla en la página.
set myURL to "https://weather.com/weather/hourbyhour/l/12345"
tell application "Google Chrome"
activate
tell front window to set curTab to make new tab at after (get active tab) with properties {URL:myURL}
tell curTab
repeat while (loading)
delay 1
end repeat
-- scroll to the top of the table
execute javascript "e=document.getElementById('twc-scrollabe');tTop=0; do {tTop +=e.offsetTop || 0; e=e.offsetParent} while(e); window.scrollTo(0,tTop);"
end tell
end tell
El problema con este JavaScript (en otra URL), debes encontrar el identificador en la fuente de la página y cambiarlo en el script, si el elemento no tiene identificador, debes usar otros métodos para obtener el elemento, el JavasScript el código será diferente dependiendo de la página del sitio.
Según la información adicional que proporcionó en los comentarios, permítame ofrecerle el siguiente código de ejemplo de cómo lo haría. (Al menos hasta que aprendí una mejor manera).
set myURL to "https://weather.com/weather/hourbyhour/l/12345"
tell application "Google Chrome"
set bounds of front window to {0, 23, 1440, 850}
tell front window to make new tab at after (get active tab) with properties {URL:myURL}
repeat while (loading of active tab of front window is true)
delay 1
end repeat
activate
tell application "System Events"
repeat 9 times
key code 125 -- # Down Arrow
delay 0.1
end repeat
end tell
end tell
Notas:
El valor del delay
comando en el repeat while ...
bucle se puede ajustar a algo más o menos, según lo considere adecuado, en función de la rapidez con la que se cargue realmente esa página, querrá minimizar la cantidad de veces que se activa el evento solo para que no se sobrecargue innecesariamente. desencadenar el evento . Es necesario que la página termine de cargarse, de lo contrario, el siguiente repeat
ciclo no se desplazará la cantidad adecuada. (Obviamente estoy usando el término pergamino en sentido figurado).
En la tell application "System Events"
declaración/bloque , es posible que deba ajustar la cantidad de veces que se activa el repeat
bucle . El delay
comando en este repeat
bucle es necesario, de lo contrario, el key code
evento , en este caso de uso, no se registra en la página correctamente.
delay 1
, así que asumí incorrectamente que mi método era malo. Cuando cambio su delay 1
a delay 3
, el código ahora funciona correctamente en mi computadora. Su solución logra lo que deseo, pero estoy muy sorprendido de que AppleScript no ofrezca un método de desplazamiento más elegante.
usuario3439894
esfera de rubik
esfera de rubik
usuario3439894
tell application "Finder" to get bounds of window of desktop
ytell application "Google Chrome" to get bounds of front window
cuando la URL de destino es la ventana frontal.esfera de rubik
usuario3439894