Ух ты, это было странно. Ваш скрипт сломал редактор AppleScript. После запуска вашего скрипта, и он не работает ... Я попытался перекомпилировать скрипт, а затем появилась ошибка, которую вы опубликовали. Так что каким-то образом ваш код вызвал поломку редактора AppleScript и, как следствие, ошибку. Мне пришлось выйти и перезапустить AppleScript Editor, чтобы он снова заработал.
Я использовал браузер приложения и обнаружил проблему. Ваша ссылка на пункт меню была неправильной. Там есть дополнительное меню, которое мы не видим ... и вы не ссылались на это дополнительное меню. Это проблема с GUI-скриптингом. И даже если скрипт GUI работает, он может сломаться в будущем, когда приложение будет обновлено. Поэтому избегайте сценариев графического интерфейса, если это возможно.
В любом случае, вот как должен выглядеть ваш код ...
tell application "Safari"
activate
end tell
tell application "System Events"
tell process "Safari"
try
tell menu bar 1
tell menu bar item 3
click menu item 1 of menu 1
end tell
end tell
on error theError
display dialog ("An error occurred while performing requested action " & theError) buttons "OK" default button "OK"
end try
end tell
end tell
EDIT:
Как я уже упоминал в своем комментарии ниже, если вы не можете найти собственную команду из словаря приложения, следующий наиболее надежный метод - использование сочетаний клавиш. У большинства пунктов меню есть они. Например, если я хочу открыть новую вкладку в окне, этот пункт меню имеет комбинацию клавиш command -t. Таким образом, мы можем использовать это так. Обратите внимание, что есть встроенная команда для открытия новой вкладки без нажатия клавиш, я просто показываю это в качестве примера.
tell application "Safari" to activate
tell application "System Events"
keystroke "t" using command down
end tell
end
Команды клавиатуры обычно не меняются между обновлениями приложений, в то время как команды gui часто делают это, потому что программисты переделывают свой интерфейс в обновлениях ... и когда это происходит, сценарии графического интерфейса пользователя теряют популярность. Одна из проблем, связанных с написанием сценариев с использованием графического интерфейса и нажатием клавиш, заключается в том, что иногда сценарий выполняется слишком быстро, и эти методы не успевают за скоростью программы, поэтому они часто дают ошибку. Когда это происходит, вам нужно замедлить работу сценария с небольшими задержками, чтобы интерфейс не отставал от сценария.