¿Cómo cambiar la posición de la barra de desplazamiento en AppleScript?

1

Tengo un archivo .scpt de AppleScript 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 es insertado inmediatamente después de la pestaña de Google Chrome actualmente abierta (si Google Chrome está actualmente abierto).

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 un poco hacia abajo automáticamente. Al igual que la variable URL, la cantidad de desplazamiento es específica, fija y predeterminada.

No conozco 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) , pero puedo decir que, para mi entorno único, es alrededor del 15% en la página. Para aclarar el significado de esta descripción, "100% en la parte inferior de la página" estaría en la posición más baja de la barra de desplazamiento (la barra de desplazamiento se puede establecer en esta posición presionando ⌘ comando + ).

La cantidad exacta de desplazamiento que deseo probablemente no sea particularmente relevante en el contexto de mi pregunta (considerando las muchas variables mencionadas anteriormente que pueden afectar la cantidad de desplazamiento). Simplemente es importante tener en cuenta que la cantidad de desplazamiento es una cifra personalizada, en lugar de estar en la parte superior o inferior de la página (ya que se puede usar el método abreviado de teclado correspondiente a través de key code en AppleScript para realizar fácilmente el desplazamiento a estos dos ubicaciones).

Espero que cualquier solución que se sugiera me ofrezca la posibilidad de ajustar y ajustar la ubicación de la barra de desplazamiento deseada, para poder acercarla lo más cerca posible a donde me gustaría desplazarme manualmente.

    
pregunta rubik's sphere 01.03.2017 - 21:25

2 respuestas

2

Puede utilizar 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 es el identificador de la tabla.

Después de eso, el 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), debe encontrar el identificador en la fuente de la página y cambiarlo en el script, si el elemento no tiene un identificador, debe Utilice otros métodos para obtener el elemento, el código JavasScript será diferente dependiendo de la página del sitio.

    
respondido por el jackjr300 02.03.2017 - 09:12
2

Basándome en la información adicional que proporcionó en los comentarios, permítame ofrecerle el siguiente ejemplo código 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 ... loop se puede ajustar a algo más o menos como ve que se ajusta según la rapidez con la que se carga esa página, querría minimizar el número de veces que se dispara el evento solo para que no se desencadene innecesariamente el evento . Es necesario que la página termine de cargarse, de lo contrario, el siguiente repeat loop no desplazará la cantidad apropiada. (Obviamente estoy usando el término scroll figurativamente.)

  • En el tell application "System Events" sentencia / bloque , es posible que deba ajustar el número de veces que se activa repeat loop . El comando delay en este repeat loop es necesario; de lo contrario, el evento key code , en este caso de uso, no se registra en la página correctamente.

respondido por el user3439894 02.03.2017 - 05:20

Lea otras preguntas en las etiquetas