Applescript: щелкните по определенному пункту строки меню

#applescript

#applescript

Вопрос:

Я создаю applescript для вызываемого приложения. Но у меня проблема с исключением: (

Извините, но «Для публикации изображений вам нужна репутация не менее 10».

В чем моя проблема?

 tell application "System Events" to tell process "EndpointConnect"
    tell menu bar item 1 of menu bar 2
        click
        click menu item "Disconnect" of menu 1
    end tell
end tell
  

Фактический результат:

 error "System Events got an error: Can’t get menu 1 of menu bar item 1 of menu bar 2 of process "EndpointConnect". Invalid index." number -1719 from menu 1 of menu bar item 1 of menu bar 2 of process "EndpointConnect"
  

Ответ №1:

Скрипт в его нынешнем виде выполняет click для объекта, который (пока) не существует. В принципе, вам нужен интервал delay между двумя click командами, чтобы дать системе время для создания экземпляра меню и его элементов.

Вот правка, которую я не могу протестировать для вас, но я надеюсь, что она сработает:

 tell application "System Events" to tell ¬
    process "EndpointConnect" to tell ¬
    menu bar 2 to tell ¬
    menu bar item 1

    if not (exists) then return null

    click

    tell (a reference to menu item "Disconnect" of menu 1)
        repeat until it exists
            delay 0.5
        end repeat
        click
    end tell
end tell
  

Однако по какой-то неизвестной причине вы, вероятно, получите раздражающую 5-секундную задержку между появлением меню и щелчком по пункту меню. Это хорошо известная / документированная проблема, на которую часто жаловались, и на протяжении многих лет она не была исправлена и, вероятно, никогда не будет.