1 votos

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

Tengo un AppleScript .scpt archivo que se asigna a un atajo de teclado a través de la aplicación de terceros, FastScripts.

El script abre una específica, fija, pre-determinado de la URL en una nueva pestaña de Google Chrome. Esta nueva pestaña se inserta inmediatamente después de la pestaña de Google Chrome (si Google Chrome es actualmente abierto).

Aquí está el 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 poner en práctica en esta secuencia de comandos es tener la barra de desplazamiento de la página web abierta en Chrome automáticamente se moverá hacia abajo un poco. Como la variable de URL, la cantidad de desplazamiento es específico, fijo, y pre-determinado.


No sé la manera adecuada de articular una cantidad de desplazamiento en la escritura (y, por supuesto, varía en función de la resolución de la pantalla, el tamaño de la pantalla, el tamaño de la ventana, y la configuración de zoom situado en Chrome para que, dada la página), pero puedo decir que, para mi entorno único, que es de alrededor de 15% inferior de la página. Para aclarar el significado de esta descripción, "100% hacia abajo en la página" sería la más baja de la barra de desplazamiento (posición de la barra de desplazamiento puede ser configurado para esta posición pulsando la tecla⌘ comando + ).

La exacta cantidad de desplazamiento que yo deseo es, probablemente, que no son especialmente relevantes en el contexto de mi pregunta (teniendo en cuenta las numerosas variables mencionadas que pueden afectar a la cantidad de desplazamiento). Simplemente, es importante tener en cuenta que la cantidad de desplazamiento es una costumbre de la figura, en lugar de ser en la parte superior o inferior de la página (ya que uno puede utilizar la respectiva método abreviado de teclado a través de key code en AppleScript para lograr fácilmente el desplazamiento a estos dos lugares).

Tengo la esperanza de que cualquiera que sea la solución se sugirió que me ofrece la capacidad de afinar y ajustar el deseado de la barra de desplazamiento de la ubicación, por lo que puedo llegar tan cerca como sea posible a donde me iba a desplazarse manualmente.

2voto

user3439894 Puntos 5883

Basado en la información adicional proporcionada en los comentarios, permítanme ofrecer el siguiente ejemplo de código de cómo lo haría. (Al menos hasta que me enteré de 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 de la delay comando en la repeat while ... de bucle se puede ajustar a algo más o menos como se puede ver el ajuste depende de lo rápido que la página de carga, se desea minimizar el número de veces que el evento se dispara solo para que no innecesariamente más de desencadenar el evento. Es necesario que la página termine de cargarse, de lo contrario la próxima repeat bucle de no desplazar la cantidad apropiada. (Estoy, obviamente, utilizando el término de desplazamiento en sentido figurado.)

  • En la tell application "System Events" de declaración de bloque, puede que necesite ajustar la cantidad de tiempo que el repeat bucle desencadenantes. El delay comando en este repeat de bucle es necesario de lo contrario la key code evento, en este caso de uso, no se registra en la página correctamente.

2voto

Baczek Puntos 150

Usted puede utilizar el JavaScript para establecer la cantidad de desplazamiento.

Para ajustar el desplazamiento con un porcentaje definido por:

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 utilizar un bucle para llegar a la cima 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), usted debe encontrar el identificador en el código fuente de la página y cambiar en el script, si el elemento no tiene un identificador, debe utilizar otros métodos para obtener el elemento, el JavasScript código será diferente dependiendo de la página del sitio.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X