AppleScript: impossibile fare clic su Menulet (Menu Bar 2) per l'app di terze parti

0

Sto cercando di creare un oggetto Applescript per automatizzare un'interazione con un'applicazione che ha una menulet di terze parti (elemento della barra dei menu, in alto a destra). L'applicazione in questione si chiama Pomodoro One . Non ha il supporto di Applescript incorporato, quindi voglio creare uno script che faccia clic sulla sua barra dei menu e preme "Avvia Pomodoro".

Dopo ore di ricerca su Internet e sperimentazione con Script Editor , oltre alla creazione di un'automazione visiva con Automator, ho realizzato questo script che DOVREBBE lavorare :

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

Tuttavia, non funziona. Sorprendente, soprattutto dal momento che l'automazione di Automator funziona e questo script è fondamentalmente una parafrasi di Applescript in cui Automator converte la sua automazione visiva in. Questo è l'errore che ottengo, sia da ScriptEditor che dall'esecuzione di Applescript in 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.

Quello che penso stia succedendo è che quando Applescript tenta di fare clic su menu bar 2 (che rappresenta la menulet), il menu che dovrebbe apparire non lo fa. Come se il click non stesse accadendo del tutto. Tuttavia, sono davvero in grado di fare clic su menu bar 1 (che rappresenta la barra dei menu principale di Pomodoro One). Questo è il motivo per cui il clic su menu bar 2 non produce nulla, specialmente dal momento che l'UI di debug di app come UI Browser segnala infatti che la menulet è rappresentata da menu bar 2 quando eseguo il profiling visivo dell'interfaccia utente.

Ci sono ore in questo e mi sento molto bloccato. Mi chiedo se ci sia un modo per far sì che Applescript giochi bene con la menulet di qualsiasi applicazione di terze parti.

Modifica

In base a questo post ( link ), ho modificato il mio script in modo che fosse il seguente:

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

Questa volta, la sceneggiatura si invererà in modo infinito e alla fine si esaurirà con l'errore -1712: System Events got an error: AppleEvent timed out. Posso assicurarti che l'accessibilità è abilitata, tramite Preferenze di Sistema - > Sicurezza e privacy - > Accessibilità sia per Pomodoro One che per Script Editor.

    
posta ecbrodie 24.10.2016 - 06:56
fonte

2 risposte

1

Ho riscontrato lo stesso problema (lo script che girava all'infinito) in macOS Sierra. Ho trascorso un po 'di tempo con Automator e ho potuto risolverlo modificando leggermente lo 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
    
risposta data 20.10.2017 - 03:42
fonte
-1

Vai a: "Preferenze / Tastiera / Scorciatoie / Scorciatoie per app" e vedi se puoi aggiungere una scorciatoia da tastiera per app, quindi usa la scorciatoia da tastiera nel tuo script.

    
risposta data 25.10.2016 - 05:37
fonte

Leggi altre domande sui tag