Ничего себе, это было странно. Ваш скрипт нарушил редактор AppleScript. После запуска скрипта, и он не работает ... Я попытался перекомпилировать скрипт, а затем вы отправили сообщение об ошибке. Так почему-то ваш код заставил редактор AppleScript сломаться и, следовательно, ошибка. Мне пришлось уйти и перезапустить редактор AppleScript, чтобы он снова работал.
Я использовал браузер пользовательского интерфейса приложения и нашел проблему. Ваша ссылка на пункт меню была неправильной. Там есть дополнительное меню, которое мы не можем видеть ... и вы не ссылались на это дополнительное меню. Это проблема с GUI-скриптингом. И даже если скрипт gui работает, он может разорваться в будущем, по мере обновления приложения. Как таковые избегают gui scripting, если это вообще возможно.
Во всяком случае, вот что ваш код должен выглядеть ...
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: Как я уже говорил в моем комментарии ниже, если вы не можете найти родную команду из словаря приложений ', следующий наиболее надежный метод - использование сочетаний клавиш. В большинстве пунктов меню есть их. Например, если бы я хотел открыть новую вкладку в окне, в пункте меню есть команда short-command-t. Поэтому мы можем использовать это так. Обратите внимание, что есть собственная команда для открытия новой вкладки без использования нажатий клавиш, я просто показываю это в качестве примера.
tell application "Safari" to activate
tell application "System Events"
keystroke "t" using command down
end tell
end
команды клавиатуры, как правило, не изменяется между обновлениями приложений в то время как графический интерфейс команды часто, потому что программисты перепроектировать их интерфейс в обновлениях ... и когда это произойдет графический интерфейс сценариев выходит из строя. Одна из ошибок с использованием обоих скриптов gui и нажатий клавиш заключается в том, что иногда сценарий идет слишком быстро, и эти методы не могут идти в ногу со скоростью программы, поэтому они часто ошибаются. Когда это произойдет, вам нужно замедлить работу скрипта с помощью небольших задержек, чтобы интерфейс не отставал от скрипта.
thanx ваш код работает так, как я предполагал :), но я действительно удивлен этой строкой: нажмите пункт меню 1 меню 1, я бы никогда не думал об этом! – Devarshi
Я просто попытался обобщить этот подход и попробовать его открыть: пункт меню «show top sites» из меню «История». Я использовал ваш скрипт и только что заменил строку: «показать пункт меню 3», чтобы «показать элемент меню 6», но он начал получать ошибку, с которой я столкнулся в сценарии, опубликованном выше. Поскольку скрипт для начинающих GUI оказался для меня очень легким, но поскольку я пытаюсь больше погрузиться в него, он завел меня с ума! Можете ли вы предложить подходящую ссылку для нее, которая может помочь начинающему, как я? – Devarshi
Как быстрая сноска, когда я пробовал это сегодня утром, она скомпилировалась и успешно сработала, но вместо этого я получил ошибку -1702, что в основном означает, что данная команда не доступна для сценариев. Ах, Applescript ... всегда держал нас на ногах. –