0 votos

AppleScript: No se puede hacer clic en el Menulet (barra de menús 2) para la aplicación de terceros

Estoy tratando de crear un Applescript para automatizar una interacción con una aplicación que tiene un menulet de terceros (elemento de la barra de menús, esquina superior derecha). La aplicación en cuestión se llama Pomodoro Uno . No tiene soporte integrado para Applescript, así que quiero crear un script que haga clic en su barra de menú y pulse "Iniciar Pomodoro".

Después de horas de investigación en Internet y de experimentar con Script Editor , más la creación de una automatización visual con Automator, he llegado a este script que DEBE trabajo:

tell application "Pomodoro One"
    activate
end tell
tell application "System Events"
    tell UI element "Pomodoro One"
        tell menu bar item 1 of menu bar 2
            click menu item 1 of menu 1
        end tell
    end tell
end tell

Sin embargo, no funciona. Sorprendente, sobre todo porque la automatización en Automator funciona y este script es básicamente una paráfrasis del Applescript en el que Automator convierte su automatización visual. Este es el error que obtengo, tanto desde ScriptEditor como ejecutando el Applescript en Automator:

System Events got an error: Can’t get menu 1 of menu bar item 1 of menu bar 2 of UI element "Pomodoro One". Invalid index.

Lo que creo que ocurre es que cuando Applescript intenta hacer clic en menu bar 2 (que representa el menulet), el menú que debe aparecer no lo hace. Como si el clic no se produjera en absoluto. Sin embargo, sí puedo hacer clic en menu bar 1 (que representa la barra de menú principal de Pomodoro One). Esto es un problema porque al hacer clic en menu bar 2 no produce nada, especialmente porque las aplicaciones de depuración de la interfaz de usuario como Navegador UI efectivamente informan que el menulet está representado por menu bar 2 cuando hago un perfil visual de la interfaz de usuario.

Llevo horas en esto y me siento muy atascado. Me pregunto si hay alguna forma de conseguir que Applescript funcione bien con el menulet de cualquier aplicación de terceros.

EDITAR

Basado en este post ( https://stackoverflow.com/questions/20595708/applescript-to-click-on-a-specific-icon-in-the-mac-menu-bar ), he modificado mi script para que sea el siguiente:

ignoring application responses
    tell application "System Events" to tell process "Pomodoro One"
        click menu bar item 1 of menu bar 2
    end tell
end ignoring
do shell script "killall System\\ Events"
delay 0.1
tell application "System Events" to tell process "Pomodoro One"
    tell menu bar item 1 of menu bar 2
        click menu item "Start Pomodoro" of menu 1
    end tell
end tell

Esta vez, el resultado es que el script gira infinitamente y finalmente se desconecta con el error -1712: System Events got an error: AppleEvent timed out. Puedo asegurar que tengo la accesibilidad activada, a través de Preferencias del Sistema --> Seguridad y Privacidad --> Accesibilidad tanto para Pomodoro One como para scriptEditor.

1voto

Me encontré con el mismo problema (el script girando infinitamente) en MacOS Sierra. Estuve un tiempo usando Automator y pude solucionarlo modificando ligeramente el script:

ignoring application responses
  tell application "System Events"
    click menu bar item 1 of menu bar 1 of application process "Pomodoro One"
  end tell
end ignoring
do shell script "killall System\\ Events"
delay 0.1
tell application "System Events"
  click menu item "Start Pomodoro" of menu 1 of menu bar item 1 of menu bar 1 of application process "Pomodoro One"
end tell

-1voto

Dave Jarvis Puntos 118

Vaya a: "Preferencias/Teclado/Correcciones/Accesos de la aplicación" y comprueba si puedes añadir un acceso directo de teclado de la aplicación y luego utilizar el acceso directo de teclado en tu script</strkeep><strkeep>.

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