Уроки AppleScript
Создание инструментов для лучшего понимания AppleScript — часть 3
Пришло время «вложить и рассказать», изучить приложение «Системные события» и использовать навигатор специальных возможностей.
Весь код, показанный в этой статье, доступен через связанный репозиторий GitHub.
Ранее на…
В Часть 1 и Часть 2 мы создали ряд скриптов и знаем, как находить окна, панели, якоря и отображать информацию. Теперь пришло время перейти к интерактивности и углубиться в иерархию, чтобы найти именно тот элемент, которым нам нужно управлять.
Взаимодействие
Мы уже сделали небольшое взаимодействие, например, заставили желаемый якорь раскрыться. Когда мы захотим пойти дальше и начать вводить текст и нажимать кнопки, нам нужно снова обратиться к словарю и открыть приложение System Events
. Первое, что мы хотим сделать, это научиться направлять все наши будущие команды против правильного процесса.
Набор процессов
Мы видим, что приложение System Events имеет коллекцию Processes Suite
с коллекцией processes
.
Мы можем перечислить в окне результатов все доступные процессы с этим скриптом.
Процесс, который нам нужен, находится там и имеет удобное название «Системные настройки».
Вложение блоков Tell
Мы можем направлять команды процессу System Preferences
приложения System Events
, вложив два оператора tell, как показано во втором блоке сценария ниже.
Наш первый блок сообщения почти такой же, как и раньше, просто используется идентификатор панели com.apple.preference.displays
вместо имени "Displays".
.
Второй блок Tell имеет вложенность. Существует внешний tell
, направляющий наш код в System Events
приложение. Внутри этого у нас есть второй вложенный теллс, который далее направляет наши команды System Preferences
процессу System Events.
. Затем мы запрашиваем все UI elements of window 1.
Вложение блоков сообщений не требуется, мы могли бы просто иметь один блок сообщений для System Events
, а затем использовать длинную строку get UI elements of window 1 of process “System Preferences”.
Вы можете себе представить, что если нам нужно выполнить несколько задач для процесса, мы устанем повторять фраза of process "System Preferences.
Для меня вложенный подход также более удобочитаем.
Элементы пользовательского интерфейса
Элемент пользовательского интерфейса задокументирован в словаре системных событий.
Получение списка элементов пользовательского интерфейса — это часто все, что нам нужно для создания скрипта. Некоторые из элементов говорят сами за себя, например button "Gather Windows",
, но другие, такие как button 3
или tab group 1
, представляют собой большую загадку.
Разгадка тайны
Accessibility Inspector
может помочь нам разгадать тайну элементов пользовательского интерфейса с общими именами. После того, как вы установили XCode, вы можете использовать Spotlight и искать его по имени, чтобы запустить. В качестве альтернативы вы можете запустить XCode и использовать меню XCode→Open Developer Tool ›
и выбрать пункт меню «Инспектор специальных возможностей».
Разрешить это
Откройте Системные настройки и на панели Security & Privacy
щелкните вкладку Privacy
, а затем щелкните строку Accessibility
в левой боковой таблице. Щелкните значок замка и используйте свой пароль, чтобы разблокировать правую часть панели. Затем используйте кнопку +, чтобы добавить Accessibility Inspector
application.
Используй это
В инспекторе специальных возможностей щелкните значок таргетинга, показанный синим цветом на изображении ниже. Затем переместите курсор на приложение, с которым вы хотите взаимодействовать, и выберите элемент. На изображении ниже я нажал кнопку Scaled
.
Раздел иерархии инспектора специальных возможностей будет заполнен всей необходимой нам информацией и даже больше. На изображении выше это немного сложно прочитать. Ниже я добавил только иерархию. Обратите внимание, что значок таргетинга (на который указывает добавленная оранжевая стрелка) показывает конкретный элемент в иерархии, который был выбран. Есть много других элементов на том же уровне в иерархии.
Нажмите кнопку
Теперь у нас есть вся необходимая информация, чтобы нажать кнопку Scaled
. Мы видим, что это часть tab group 1
, которая является частью window "ASUS PB278 (1)"
(которая, по крайней мере, на данный момент имеет индекс 1). Вот полный скрипт для нажатия этой кнопки.
Может показаться, что мне потребовалось много времени, чтобы показать вам, как нажимать кнопку. Я согласен, что это так, но я надеюсь, что вы согласитесь, что вы накопили набор инструментов, которые позволят вам теперь самостоятельно нажимать кнопки и многое другое.
Это не конец нашего учебного пути. Есть еще несколько ключевых концепций для обеспечения воспроизводимого и надежного запуска скриптов, и мы рассмотрим эти идеи в будущих статьях, когда будем улучшать наш скрипт System Preferences, чтобы сделать его более полезным. Смотрите обзор всех статей (на данный момент) в этой серии.