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 múltiples tamaños

1

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

  1. Abra Safari y navegue a una URL específica, a un archivo delimitado por línea, o CSV. Esto no es obligatorio pero haría que la generación de múltiples capturas de pantalla de diferentes páginas sea 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 como la URL junto con el tamaño de la pantalla

pregunta Mike 10.02.2015 - 19:20

2 respuestas

2

Solo obtuve una solución parcial , que funciona aparte de algunos pequeños problemas.

En primer lugar, no puede almacenar la URL en el nombre del archivo (debido a barras y caracteres especiales), por lo que deberá especificar el nombre del sitio web.

Pero lo que es más importante, hasta ahora la importación de CSV no está implementada. ¿Es CSV realmente un requisito difícil, o podría obtener la lista de URL en un formato diferente? Si no, actualice su pregunta con líneas ejemplares 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
    
respondido por el Asmus 10.02.2015 - 20:39
0

Es mejor verificar si la página ha terminado de cargarse antes de hacer una captura de pantalla. Tomando el código de respuesta parcial original de Asmus, algo parecido a ...

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 hará cargo de ello.

    
respondido por el Broadcha 10.08.2018 - 15:51

Lea otras preguntas en las etiquetas