Гид по технологиям

UI-скриптинг в AppleScript: управление любым приложением на macOS

4 min read Автоматизация Обновлено 12 Apr 2026
UI-скриптинг в AppleScript на macOS
UI-скриптинг в AppleScript на macOS

Обложка: схема взаимодействия AppleScript с интерфейсом macOS

firstimage=”https://www.makeuseof.com/wp-content/uploads/2011/03/applescript.jpg”

Как использовать AppleScript: пример окна и команд

AppleScript — мощный инструмент автоматизации на macOS, но не все приложения напрямую поддерживают его команды. В таких случаях на помощь приходит UI-скриптинг (User Interface scripting): управление элементами графического интерфейса как будто вы взаимодействуете с ними вручную. В этой статье объясняются базовые приёмы, даются практические примеры, рекомендации по диагностике и готовые шаблоны для ускорения работы.

Для кого это руководство

Это руководство полезно, если вы:

  • хотите автоматизировать рутинные действия в приложениях без AppleScript-слоя;
  • используете Automator и хотите расширить возможности задач;
  • пишете скрипты для коллег и хотите повысить их надёжность.

Определение: UI-скриптинг — управление элементами графического интерфейса приложения через System Events и команды click/keystroke.

Важные предварительные шаги

  1. Обновите базовые знания AppleScript. Если вы давно не писали скриптов — освежите синтаксис и структуру tell-блоков.
  2. Включите доступ для вспомогательных устройств: перейдите в Системные настройки → Универсальный доступ (System Preferences, Universal Access) и включите “Enable access for assistive devices”.

Включение доступа для вспомогательных устройств в macOS

Важно: без разрешений macOS блокирует команды UI-скриптинга. Если скрипт не работает — проверьте права в Системных настройках.

Основные приёмы: эмуляция нажатий клавиш (keystroke)

Проще всего управлять интерфейсом, имитируя нажатия клавиш:

  • CMD-F: keystroke "f" using {command down}
  • CMD+SHIFT+S: keystroke "s" using {command down, shift down}
  • Ввод текста: keystroke "текст"
  • Нажатие таба: keystroke tab

Перед вызовом keystroke обязательно открыть контекст через System Events и процесс приложения:

tell application "System Events"

tell process "TextEdit"

…затем выполняйте keystroke и другие команды, и не забудьте end tell.

Пример последовательности команд keystroke в TextEdit

Совет: если нужно вводить большое количество текста, keystroke может быть медленным. В некоторых случаях быстрее использовать AppleScript-команды приложения (если они доступны) или временные файлы и импорт.

Нажатие кнопок и выбор элементов

Для клика по кнопке используйте:

click button "Replace All"

Иногда элемент доступен не напрямую как button, а как pop up button, checkbox, radio button и т. д. Комбинируйте click, value, set и select в зависимости от типа элемента.

Исследование интерфейса: UIElementInspector и иерархия элементов

Не все элементы очевидны. Используйте бесплатный UIElementInspector (или Accessibility Inspector в Xcode) для определения иерархии элементов. Инспектор показывает, над каким элементом вы находитесь, его тип и позицию в дереве.

UIElementInspector: иерархия элементов интерфейса и pop-up button

Пример представления в скрипте:

tell group 1 of group 1 of sheet 1 of window 1

tell pop up button 1

click

Это значит, что иногда нужно обращаться к элементам через несколько уровней group, sheet, window и т. п.

Пример окна сохранения и выпадающего меню

Пример из практики: я хотел сохранить документ в формате RTF. Окно “Save As” представлено поверх окна документа, и UIElementInspector не всегда указывает имя родительского окна. В таких случаях вызывайте window 1, а не имя “Example”. Также не забудьте сначала кликнуть по выпадающему меню, прежде чем выбрать пункт.

Пошаговое методическое руководство (мини-методология)

  1. Откройте приложение и вручную выполните нужную последовательность действий, фиксируя каждый шаг.
  2. Запишите порядок окон и модальных листов (sheets) — они меняют индекс window/ sheet.
  3. Включите UI-инспектор и наведите на каждый элемент, чтобы узнать его тип и путь.
  4. Напишите простой скрипт с tell application "System Events"tell process "AppName".
  5. Преобразуйте шаги в комбинации keystroke, click, set value of и т. д.
  6. Тестируйте по шагам, добавляя задержки delay 0.2 при необходимости.

Критерии приёмки:

  • Скрипт повторяемо выполняет задачу без вмешательства.
  • Скрипт корректно обрабатывает модальные диалоги.
  • Скрипт завершается без ошибок при стандартной конфигурации системы.

Шаблон скрипта: Find & Replace в TextEdit (с пояснениями)

Примерная структура скрипта:

tell application "TextEdit" to activate

tell application "System Events"

tell process "TextEdit"

keystroke "f" using {command down} – открыть окно Find

delay 0.2

keystroke "искомый текст"

keystroke tab

keystroke "замена" -- затем клик по "Replace All"click button “Replace All” of window 1end tellend tellОбъяснение:delayпомогает дождаться появления окна. Если окно появляется медленно, увеличьте значение. ## Чек-лист для надёжных UI-скриптов (роль: разработчик/администратор) - [ ] Проверить права в Системных настройках → Универсальный доступ. - [ ] Убедиться, что приложение активно (activate). - [ ] Использоватьdelayпосле открытия модального окна. - [ ] Проверять наличие окна/элемента перед действием (см. тестовые условия ниже). - [ ] Логировать ключевые шаги (display dialog или запись в файл). - [ ] Обрабатывать ошибки и завершающиеend tell. ## Когда UI-скриптинг не работает — варианты отказа и решения 1. Элемент не виден/в другом рабочем пространстве (Space) — переключитесь на нужный Space или используйтеactivate. 2. Приложение использует нестандартные компоненты (например, OpenGL/Metal канвасы) — такие элементы могут быть недоступны для Accessibility API. 3. Элементы динамически меняют индекс — ориентируйтесь на надписи (name) и свойства, а не только на номера (button 1). 4. Задержки слишком малы — увеличьтеdelayи используйте проверки существования элемента. Контрпример: некоторые графические приложения (игры, графические редакторы на основе собственных фреймворков) не предоставляют элементы через Accessibility API — UI-скриптинг в них не применим. ## Альтернативные подходы - Использовать встроенные AppleScript-скрипты приложения (если есть) — они быстрее и надёжнее. - Автоматизировать через командную строку или Apple Events (scripting additions), если приложение поддерживает. - Использовать GUI-автоматизаторы уровня системы (например, Automator workflows, Shortcuts) в сочетании с Shell-скриптами. ## Шпаргалка по командам (cheat sheet) -tell application “System Events”— вход в UI-скриптинг. -tell process “AppName”— ссылка на процесс приложения. -click — клик по кнопке/полю. -keystroke “text”— ввод текста. -keystroke “f” using {command down}— модифицированные клавиши. -value of checkbox 1— чтение значения. -set value of text field 1 to “новое”— запись в поле. -delay 0.2— пауза в секундах. ## Тестовые сценарии и критерии приёмки 1. Тест: открыть Find в TextEdit и заменить текст. - Ожидаемый результат: все вхождения заменены; окно диалога закрыто. 2. Тест: открыть Save As и выбрать формат RTF в выпадающем меню. - Ожидаемый результат: выбран формат RTF и файл сохранён. 3. Тест: сценарий на медленной машине (симуляция задержки). - Ожидаемый результат: скрипт корректно ждёт появления элементов и завершает работу. ## Отладка и полезные приёмы - Используйтеdisplay dialogдля вывода переменных и шагов в процессе отладки. - Логируйте событие в файл при каждом ключевом шаге для последующего анализа. - Если индексы элементов меняются, поищите свойстваnameилиdescription` и обращайтесь к элементам по ним. ## Безопасность и приватность UI-скрипты эмулируют действия пользователя и могут взаимодействовать с конфиденциальной информацией. Не запускайте сторонние скрипты без проверки кода. Предупредите пользователей о том, какие права требуются и зачем. ## Краткое резюме и рекомендации UI-скриптинг расширяет возможности AppleScript, позволяя автоматизировать приложения без собственных AppleScript-интерфейсов. Всегда: - включайте доступ для вспомогательных устройств; - исследуйте интерфейс через инспектор; - добавляйте паузы и проверки наличия элементов; - логируйте и тестируйте на целевых конфигурациях. Что дальше: попробуйте автоматизировать одно рутинное действие в вашем рабочем процессе и перенесите его в шаблон скрипта. Поделитесь в комментариях, какие задачи удаётся автоматизировать — интересно сравнить подходы. Важное замечание: UI-скриптинг требует терпения и частой корректировки — но он приносит ощутимый выигрыш в автоматизации там, где прямых API нет. — Ключевые термины (1‑строчно): - UI-скриптинг — управление интерфейсом через System Events. - UIElementInspector — инструмент для определения иерархии элементов. - keystroke — команда эмуляции ввода клавиш. Итог: с правильной методологией и инструментами UI-скриптинг делает AppleScript применимым почти к любому macOS-приложению.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро