1 votos

AppleScript en OS X 10.10 para cambiar el tamaño de la ventana de Safari y tomar una captura de pantalla de esa ventana y repetir con varios tamaños

Me gustaría crear una aplicación AppleScript que cuando se ejecute haga lo siguiente:

  1. Abra Safari y navegue hasta una URL específica, o un archivo delimitado por líneas, o CSV. Esto no es necesario, pero haría que la generación de múltiples capturas de pantalla de diferentes páginas fuera mucho más rápida.

  2. Cambiar el tamaño de la ventana de Safari a uno de varios tamaños

  3. Tome una captura de pantalla de la ventana de Safari con el nombre del archivo siendo la url junto con el tamaño de la pantalla

2voto

James Socol Puntos 146

Sólo tengo un parcial solución, que funciona salvo algunos pequeños problemas.

En primer lugar, no se puede almacenar la URL en el nombre del archivo (debido a las barras inclinadas y a los caracteres especiales), por lo que tendría que especificar el nombre del sitio web.

Pero lo más importante es que hasta ahora no se ha implementado la importación de CSV. ¿Es el CSV realmente un requisito difícil, o podría obtener la lista de URLs en un formato diferente? Si no es así, por favor actualice su pregunta con líneas de ejemplo de su archivo CSV. Trabajaré en ello y actualizaré mi respuesta lo antes posible.

on open_url(theUrl, theUrlName, x0, y0, xSize, ySize)
    tell application "Safari"
        open location theUrl
        activate

        set bounds of window 1 to {x0, y0, xSize, ySize}
        set windowID to id of window 1
        set the_state to missing value

        repeat until the_state is "complete"
            set the_state to (do JavaScript "document.readyState" in document 1)
            delay 0.3
        end repeat

        set theFolder to POSIX path of (path to desktop as string)
        set shellCommand to "/usr/sbin/screencapture -l " & windowID & " " & quoted form of (theFolder & "Screen Shot " & theUrlName & " " & xSize & "x" & ySize & ".png")
        do shell script shellCommand

    end tell
end open_url

set resolutionList to {{640, 480}, {1024, 768}}
set siteList to {{"http://www.apple.com", "Apple"}, {"http://www.google.com", "Google"}}

repeat with resolution in resolutionList
    set xSize to item 1 of resolution
    set ySize to item 2 of resolution
    repeat with theSite in siteList
        set theUrl to item 1 of theSite
        set theUrlName to item 2 of theSite
        open_url(theUrl, theUrlName, 0, 0, xSize, ySize)
    end repeat
end repeat

0 votos

Es perfecto, gracias. Sólo una cosa menor, las capturas de pantalla se toman demasiado rápido antes de que se cargue la página. He aumentado el retraso. Además, ¿hay alguna forma de decirle a Safari que lo imite para que piense que es un iPhone o un iPad?

0 votos

Sí, la parte del retraso es complicada. He intentado residir en el readystate de JavaScript, pero esto muchas veces termina antes de que el navegador renderice la página completamente. Para cambiar el User-Agent, podrías probar el AppleScript publicado aquí (Nota: no lo he probado):

0voto

Yasir Arsanukaev Puntos 6547

Es mejor comprobar si la página ha terminado de cargarse antes de hacer una captura de pantalla. Tomando el código de la respuesta parcial original de Asmus algo en la línea de...

delay 10

tell application "Safari"
    do JavaScript "document.readyState == 'complete'" in window 1's current tab
end tell
set loaded to result
if loaded is true then
    set shellCommand to "/usr/sbin/screencapture -l " & windowID & " " & quoted form of (theFolder & "Screen Shot " & theUrlName & " " & xSize & "x" & ySize & ".png")
    do shell script shellCommand
end if

...se encargará de ello.

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