Mejorar Applecript para abrir Nueva ventana privada con Safari

1

Hice este AppleScript para usar con la herramienta de script. Se puede guardar como la aplicación para iniciar desde un clic. Tengo que aprobar la aplicación aunque en la herramienta de edición de seguridad.

Esto abre el navegador privado haciendo clic en los elementos del menú. Luego cierra la primera ventana buscando la URL impensable en el menú Ventana. Está funcionando pero es llamativo a medida que las ventanas se abren y se cierran.

Deseo que se pueda mejorar de alguna manera para permitir hacer clic en el acceso directo y ver que solo la ventana de Safari se inicia en modo privado sin tanta apariencia de "macro". ¿Puedes ayudar a mejorar esto para mí?

# 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
    
pregunta ndasusers 06.05.2016 - 03:58

2 respuestas

2

Prueba lo siguiente:

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

Ahora, aquí está el código que elegiría usar para verificar si Safari ya está abierto y, en caso afirmativo, simplemente abre una nueva ventana privada. Si no, entonces funciona como creo que pretendías, que es cerrar la ventana de apertura y luego abrir una nueva ventana privada.

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: Es posible que el valor de delay deba ajustarse a la velocidad de su sistema. Como se codificó, los valores actuales de delay funcionan bien en mi sistema. El valor está en segundos o en fracciones del mismo como un valor de decimal .

Por cierto, no veo la necesidad de abrir una nueva pestaña para " una URL que no se puede encontrar ", ya que creo que mi método está en el bloque de código directamente arriba, logra su objetivo deseado, tanto rápidamente como sin que lo haya puesto, " vea que la ventana de Safari se inicie en modo privado sin tanta apariencia de" macro ". ".

Por cierto, el código de tu pregunta podría reducirse al ejemplo a continuación y en realidad se ejecutaría un poco más rápido que la forma en que actualmente lo tienes codificado.

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

Sin embargo, mi primer (y segundo) ejemplo, en la parte superior de esta respuesta, actúa directamente sin ver que los menús se abren y cierran, ya que no utiliza eventos de clic sino que presiona las teclas. Además, si bien el ejemplo condensado de su código es solo eso, no lo usaría sin las declaraciones delay apropiadas cuando corresponda.

Al final, elegiría usar el segundo bloque de código que se muestra en esta respuesta.

    
respondido por el user3439894 06.05.2016 - 12:07
0

Mi problema con @ user3439894 es la respuesta anterior y es que si Safari está abierto en un espacio diferente, primero puede cambiarlo y abrir una nueva ventana allí en lugar del espacio actual. Así que 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

Lo que encuentro funciona bien, aunque puede ser un poco más lento.

    
respondido por el daphtdazz 07.11.2017 - 20:46

Lea otras preguntas en las etiquetas