Migliora applecript per aprire la nuova finestra privata con Safari

1

Ho realizzato questo AppleScript da utilizzare con lo strumento di script. Può essere salvato come l'applicazione da avviare da un clic. Devo approvare l'applicazione però nello strumento di modifica della sicurezza.

Questo apre il browser privato facendo clic sulle voci di menu. Quindi chiude la prima finestra cercando l'URL impensabile nel menu Finestra. Funziona ma appariscente quando le finestre si aprono e si chiudono.

Spero che possa essere migliorato in qualche modo per consentire di fare clic sul collegamento poi vedere che solo la finestra di Safari viene lanciata in modalità privata senza così tanto aspetto "macro". Puoi aiutarmi a migliorare questo per me?

# Start or bring forward Safari window
tell application "Safari"
    activate
end tell

# Open a URL that cannot be found
set theURL to "http://localhost:38"
tell application "System Events"
    tell process "Safari"
        open location theURL
    end tell
end tell

# Launch a new private window
tell application "System Events"
    tell process "Safari"
        tell menu bar 1
            click menu bar item "File"
            tell menu "File"
                click menu item "New Private Window"
            end tell
        end tell
    end tell
end tell

# Close the first launcher window
tell application "System Events"
    tell process "Safari"
        tell menu bar 1
            click menu bar item "Window"
            tell menu "Window"
                click menu item "Failed to open page"
            end tell
        end tell
        tell menu bar 1
            click menu bar item "File"
            tell menu "File"
                click menu item "Close Window"
            end tell
        end tell
    end tell
end tell
    
posta ndasusers 06.05.2016 - 03:58
fonte

2 risposte

2

Prova quanto segue:

tell application "Safari"
    activate
    delay 0.5
end tell
tell application "System Events"
    open location "http://localhost:38"
    delay 0.5
    keystroke "w" using command down
    keystroke "n" using {shift down, command down}
end tell

Ora ecco il codice che sceglierei di utilizzare mentre controlla se Safari è già aperto e, in caso affermativo, apre una nuova finestra Privata. In caso contrario, funziona come ritengo tu abbia inteso, ovvero chiudere la finestra di apertura e quindi aprire una nuova finestra privata.

on is_running(appName)
    tell application "System Events" to (name of processes) contains appName
end is_running

set isRunning to is_running("Safari")

if isRunning then
    tell application "Safari" to activate
    delay 0.5
    tell application "System Events" to keystroke "n" using {shift down, command down}
else
    tell application "Safari" to activate
    delay 1
    tell application "System Events"
        keystroke "w" using command down
        keystroke "n" using {shift down, command down}
    end tell
end if
  • Nota: potrebbe essere necessario modificare il valore di delay per la velocità del tuo sistema. Come codificato, i valori attuali di delay funzionano bene sul mio sistema. Il valore è in secondi o le sue frazioni come valore decimale .

A proposito, non vedo la necessità di aprire una nuova scheda per " un URL che non può essere trovato " come credo nel mio metodo qui, nel blocco di codice direttamente sopra, raggiunge il tuo obiettivo prefissato, sia rapidamente che senza, come dici tu, " vedi che la finestra di Safari viene lanciata in modalità privata senza così tante" macro "come l'aspetto. ".

A proposito, il codice nella tua domanda potrebbe essere ridotto all'esempio qui sotto e in effetti sarebbe eseguito un po 'più veloce rispetto al modo in cui attualmente lo hai codificato.

tell application "Safari"
    activate
end tell
tell application "System Events"
    open location "http://localhost:38"
    click menu item "New Private Window" of menu "File" of menu bar 1 of process "Safari"
    click menu item "Failed to open page" of menu "Window" of menu bar 1 of process "Safari"
    click menu item "Close Window" of menu "File" of menu bar 1 of process "Safari"
end tell

Tuttavia il mio primo (e secondo) esempio, all'inizio di questa risposta, agisce direttamente senza vedere i menu aperti e chiusi in quanto non utilizza gli eventi dei clic ma i tasti premuti. Anche se l'esempio condensato del tuo codice è proprio questo, non lo userei senza le appropriate dichiarazioni delay dove applicabile.

Alla fine, sceglierei il secondo blocco di codice mostrato in questa risposta.

    
risposta data 06.05.2016 - 12:07
fonte
0

Il mio problema con la @ user3439894 risposta sopra è che se Safari è aperto in uno spazio diverso prima puoi passare ad esso e aprire una nuova finestra lì invece che nello spazio corrente. Quindi io uso:

tell application "Safari"
    make new document
    activate
end tell
tell application "System Events"
    keystroke "n" using {shift down, command down}
    keystroke "'" using {command down}
    keystroke "w" using command down
end tell

Che trovo funziona bene, anche se potrebbe essere un tocco più lento.

    
risposta data 07.11.2017 - 20:46
fonte

Leggi altre domande sui tag