Me gustaría crear una aplicación AppleScript que, cuando se ejecute, haga lo siguiente:
Abre Safari y navega a una URL específica, un archivo delimitado por líneas 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.
Cambiar el tamaño de la ventana de Safari a uno de varios tamaños
Tome una captura de pantalla de la ventana de Safari con el nombre de archivo como URL junto con el tamaño de la pantalla
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 las barras oblicuas y los 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. ¿CSV es realmente un requisito difícil o podría obtener la lista de URL en un formato diferente? De lo contrario, 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
Es mejor comprobar 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 así como...
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.
Miguel
Asmus