2010-08-13 4 views
0

Я пытаюсь это простой графический скрипт, чтобы открыть новое окно Safari:Простой графический интерфейс сценариев вопрос

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 
       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 

но это дает сообщение об ошибке:

Ожидаемый конец строки, но нашел " ""

может кто-нибудь предложить мне, где я могу быть неправым?

Спасибо ,

Miraaj

ответ

1

Ничего себе, это было странно. Ваш скрипт нарушил редактор 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 и нажатий клавиш заключается в том, что иногда сценарий идет слишком быстро, и эти методы не могут идти в ногу со скоростью программы, поэтому они часто ошибаются. Когда это произойдет, вам нужно замедлить работу скрипта с помощью небольших задержек, чтобы интерфейс не отставал от скрипта.

+0

thanx ваш код работает так, как я предполагал :), но я действительно удивлен этой строкой: нажмите пункт меню 1 меню 1, я бы никогда не думал об этом! – Devarshi

+0

Я просто попытался обобщить этот подход и попробовать его открыть: пункт меню «show top sites» из меню «История». Я использовал ваш скрипт и только что заменил строку: «показать пункт меню 3», чтобы «показать элемент меню 6», но он начал получать ошибку, с которой я столкнулся в сценарии, опубликованном выше. Поскольку скрипт для начинающих GUI оказался для меня очень легким, но поскольку я пытаюсь больше погрузиться в него, он завел меня с ума! Можете ли вы предложить подходящую ссылку для нее, которая может помочь начинающему, как я? – Devarshi

+0

Как быстрая сноска, когда я пробовал это сегодня утром, она скомпилировалась и успешно сработала, но вместо этого я получил ошибку -1702, что в основном означает, что данная команда не доступна для сценариев. Ах, Applescript ... всегда держал нас на ногах. –

Смежные вопросы