AppleScript in OS X 10.10 per ridimensionare la finestra di Safari e prendere Screen Shot di quella finestra e ripetere con più dimensioni

1

Mi piacerebbe creare un'applicazione AppleScript che durante l'esecuzione farà quanto segue:

  1. Apri Safari e vai a un URL specifico o a un file delimitato da linee o CSV. Questo non è richiesto ma renderebbe molto più veloce la generazione di più screenshot di pagine diverse.

  2. Ridimensiona la finestra di Safari in una delle dimensioni

  3. Fai uno screenshot della finestra di Safari con il nome del file che è l'url insieme alle dimensioni dello schermo

posta Mike 10.02.2015 - 19:20
fonte

2 risposte

2

Ho solo una soluzione parziale , che funziona a parte alcuni piccoli problemi.

Prima di tutto, non puoi memorizzare l'URL nel nome del file (a causa di barre e caratteri speciali), quindi devi specificare il nome del sito web.

Ma ancora più importante, fino ad ora l'importazione CSV non è stata implementata. CSV è davvero un requisito difficile o potresti ottenere l'elenco di URL in un formato diverso? In caso contrario, aggiorna la domanda con linee esemplificative del tuo file CSV. Ci lavorerò e aggiornerò la mia risposta il prima possibile.

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
    
risposta data 10.02.2015 - 20:39
fonte
0

È meglio controllare se la pagina ha terminato il caricamento prima di fare uno screenshot. Prendendo il codice di risposta parziale originale di Asmus qualcosa del tipo ...

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

... lo prenderà in carico.

    
risposta data 10.08.2018 - 15:51
fonte

Leggi altre domande sui tag