2 votos

Mejorar applescript para abrir una nueva ventana privada con Safari

Hice este AppleScript para usarlo con la herramienta script. Se puede guardar como la aplicación para lanzar desde un clic. Sin embargo, tengo que aprobar la aplicación 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 impensable URL en el menú Ventana. Funciona pero es llamativo ya que las ventanas se abren y se cierran.

Me gustaría que se pudiera mejorar de alguna manera para permitir hacer clic en el acceso directo y luego ver que sólo se lanza la ventana de Safari en modo privado sin tanta apariencia de "macro". ¿Pueden ayudarme a mejorar esto?

# 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

2voto

user3439894 Puntos 5883

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 bien, aquí está el código Yo optaría por utilizarlo, ya que comprueba si Safari ya está abierto y, en caso afirmativo, simplemente abre una nueva ventana privada. Si no es así, funciona como creo que pretendías, que es cerrar la ventana abierta 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: El valor del delay puede necesitar ser ajustado para la velocidad de su sistema. Tal y como están codificados los valores actuales de delay funcionan bien en mi sistema. El valor está en segundos o sus fracciones como decimal valor.

Por cierto, no veo la necesidad de abrir una nueva pestaña para " una URL que no se puede encontrar "como creo que mi método aquí, en el bloque de código directamente arriba, logra su objetivo previsto, de forma rápida y sin, como usted dice, " ver que la ventana de Safari se lanza en modo privado sin tanta apariencia de "macro". ".


Por cierto, el código en su pregunta podría reducirse al ejemplo de abajo y en realidad se ejecutaría un poco más rápido que la forma en que actualmente lo tiene 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 se cierran, ya que no está utilizando eventos de clic, sino pulsaciones de teclas. También mientras el ejemplo condensado de tu código es sólo eso, yo no lo usaría sin el apropiado delay declaraciones en su caso.

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

0voto

ltip3 Puntos 26

Mi problema con @usuario3439894 La respuesta de arriba es que si Safari está abierto en un espacio diferente primero puede cambiar a él y abrir una nueva ventana allí en lugar de en el 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 cual me parece que funciona bien, aunque puede ser un poco más lento.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X