AppleScript: Menület (Menüleiste 2) für Drittanbieter-App kann nicht angeklickt werden

Ich versuche, ein Applescript zu erstellen, um eine Interaktion mit einer Anwendung zu automatisieren, die über ein Menület eines Drittanbieters verfügt (Menüleistenelement, obere rechte Ecke). Die fragliche Anwendung heißt Pomodoro One . Es hat keine eingebaute Applescript-Unterstützung, also möchte ich ein Skript erstellen, das auf seine Menüleiste klickt und "Start Pomodoro" drückt.

Nach stundenlanger Recherche im Internet und Experimentieren mit dem Skripteditor sowie der Erstellung einer visuellen Automatisierung mit Automator bin ich auf dieses Skript gekommen, das funktionieren SOLLTE :

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

Es funktioniert jedoch nicht. Überraschend, zumal die Automatisierung in Automator funktioniert und dieses Skript im Grunde eine Umschreibung des Applescripts ist, in das Automator seine visuelle Automatisierung umwandelt. Dies ist der Fehler, den ich erhalte, sowohl vom ScriptEditor als auch beim Ausführen des Applescripts 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.

Was meiner Meinung nach passiert, ist, dass, wenn Applescript versucht, auf (das das Menulet darstellt) zu klicken menu bar 2, das Menü, das erscheinen soll, nicht erscheint. Als ob das Klicken überhaupt nicht passiert. Ich kann jedoch tatsächlich auf klicken menu bar 1(was die Hauptmenüleiste von Pomodoro One darstellt). Dies ist verblüffend, warum das Klicken auf menu bar 2nichts ergibt, zumal UI-Debugging-Apps wie der UI-Browser tatsächlich melden, dass das Menulet dargestellt wird, menu bar 2wenn ich die visuelle Profilerstellung der Benutzeroberfläche durchführe.

Ich bin Stunden darin und ich fühle mich sehr festgefahren. Ich frage mich, ob es eine Möglichkeit gibt, Applescript dazu zu bringen, gut mit dem Menulet einer Drittanbieteranwendung zu spielen.

BEARBEITEN

Basierend auf diesem Beitrag ( https://stackoverflow.com/questions/20595708/applescript-to-click-on-a-specific-icon-in-the-mac-menu-bar ) habe ich mein Skript wie folgt geändert :

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

Diesmal führt dies dazu, dass sich das Skript unendlich dreht und schließlich mit Fehler -1712: System Events got an error: AppleEvent timed out.Ich kann Ihnen versichern, dass ich die Barrierefreiheit aktiviert habe, über Systemeinstellungen --> Sicherheit und Datenschutz --> Barrierefreiheit für Pomodoro One und den Skripteditor.

Antworten (2)

Ich bin in macOS Sierra auf dasselbe Problem gestoßen (das Skript dreht sich unendlich). Ich habe einige Zeit mit Automator verbracht und konnte es lösen, indem ich das Skript leicht modifizierte:

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

Gehen Sie zu: „Preferences/Keyboard/Shortcuts/App Shortcuts“ und prüfen Sie, ob Sie eine App-Tastenkombination hinzufügen können, und verwenden Sie dann die Tastenkombination in Ihrem Skript.