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

0

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ú, esquina superior derecha). La aplicación en cuestión se llama Pomodoro One . No tiene compatibilidad integrada con Applescript, así que quiero crear un script que haga clic en su barra de menú y presione "Iniciar Pomodoro".

Después de horas de investigación en Internet y experimentación con Script Editor , más la creación de una automatización visual con Automator, he creado este script que DEBERÍA trabajar :

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, especialmente debido a que 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 recibo, tanto de ScriptEditor como de la ejecución de 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 está sucediendo es que cuando Applescript intenta hacer clic en menu bar 2 (que representa el menulet), el menú que se supone que aparece no lo hace. Como si el click no estuviera pasando totalmente. Sin embargo, puedo hacer clic en menu bar 1 (que representa la barra de menú principal de Pomodoro One). Esta es la razón por la que hacer clic en menu bar 2 no produce nada, especialmente porque las aplicaciones de depuración de IU como UI Browser informan que el menulet está representado por menu bar 2 cuando hago perfiles visuales de la interfaz de usuario.

Estoy horas en esto y me siento muy atascado. Me pregunto si hay alguna forma en que pueda hacer que Applescript juegue bien con el menulet de cualquier aplicación de terceros.

EDIT

Basado en esta publicación ( enlace ), modifiqué 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, hace que el script gire infinitamente y finalmente se agote con el error -1712: System Events got an error: AppleEvent timed out. Puedo asegurarle que tengo habilitada la accesibilidad, a través de Preferencias del sistema - > Seguridad y privacidad - > Accesibilidad para Pomodoro One y Script Editor.

    
pregunta ecbrodie 24.10.2016 - 06:56

2 respuestas

1

Encontré el mismo problema (la secuencia de comandos girando infinitamente) en macOS Sierra. Pasé un tiempo usando Automator y pude resolverlo 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
    
respondido por el Julian Pulgarin 20.10.2017 - 03:42
-1

Ir a: "Preferencias / Teclado / Atajos / Atajos de aplicaciones" y vea si puede agregar un atajo de teclado de aplicación y luego usar el atajo de teclado en su script.

    
respondido por el Tunes 25.10.2016 - 05:37

Lea otras preguntas en las etiquetas