AppleScript или Automator для нажатия на меню в приложении?
-
22-09-2019 - |
Вопрос
Я не уверен, что это выполнимо с помощью AppleScript и / или Automator ... но я хотел бы иметь возможность:
a) запустите приложение (я знаю, что это можно довольно легко сделать с помощью AppleScript или Automator).
б) после запуска приложения используйте AppleScript или Automator для выбора определенных пунктов меню.
например ,Я хотел бы запустить Excel 2008 (у меня есть домашняя / студенческая версия, которая не поставляется предварительно настроенной для Automator), а затем щелкните меню "Файл" и нажмите "Открыть".
Есть какие-нибудь указания о том, куда идти / искать, как выбрать подобные пункты меню (или возможно ли это вообще)?
Вы можете "вроде" сделать это, используя функцию записи Automator, но запись очень хрупкая.
Я бы предпочел иметь возможность использовать AppleScript, чтобы просто захватить "массив", содержащий каждый пункт меню для приложения, а затем программно щелкнуть по 0-му пункту меню в моем массиве ... и т.д.и т.д.
Возможно ли это?
ТИА
Решение
Я не знаю насчет захвата массива, но, похоже, это может сработать для отправки щелчков мыши и т. Д:
Другие советы
tell application "###"
activate
end tell
tell application "System Events"
tell process "###"
click menu item "^^^" of menu "$$$" of menu bar 1
end tell
end tell
Поместите ваше приложение в ### и поместите ваш пункт меню в ^^^ и поместите ваше меню (файл, редактирование, просмотр и т.д.) в $ $$.Капитализация имеет значение.
Поместите это в applescript, кстати
ПРИМЕР:
tell application "iTunes"
activate
end tell
tell application "System Events"
tell process "iTunes"
click menu item "as list" of menu "view" of menu bar 1
end tell
end tell
удалите двойные пробелы, ЗА ИСКЛЮЧЕНИЕМ ПРОМЕЖУТКОВ МЕЖДУ END TELL И TELL APPLICATION "СИСТЕМНЫЕ СОБЫТИЯ".
Сценарии пользовательского интерфейса - непостоянный зверь.Он хрупкий и часто чувствителен ко многим вещам, находящимся вне вашего контроля, таким как неожиданные диалоги (из других приложений), изменения системного шрифта или языка, активность пользователя.Не говоря уже об изменениях в пользовательском интерфейсе приложения в разных версиях.
Гораздо надежнее использовать talk непосредственно с приложением через его AppleScript API.Это именно то, для чего предназначен AppleScript.Вы всегда можете просмотреть действия и данные, которые приложение может предоставить через AppleScript, с помощью пункта меню "Открыть словарь ..." в редакторе AppleScript.app's (выберите приложение, которое вы хотите создать в диалоговом окне file).Вместо того чтобы имитировать щелчок мышью по меню, вы вызываете действие, которое запускает этот пункт меню, непосредственно через AppleScript.
Конечно, не все приложения имеют полный (или вообще какой-либо) AppleScript API.Excel, однако, имеет отличную поддержку AppleScript, если это ваша цель.
Если вы действительно пытаетесь провести тестирование пользовательского интерфейса, я рекомендую вам начать с других вариантов:
- Протестируйте модель (аналогично написанию сценария модели приложения с помощью AppleScript).Фактически, если вы включите AppleScript API в свое приложение, вы также сможете автоматизировать тестирование этого API.
- Использование Google Toolbox для Mac's дополнения для модульного тестирования (или создайте свои собственные) для программной отправки событий мыши или клавиатуры в ваше приложение.
- Используйте Instruments.app для записи последовательности пользовательского интерфейса.Запись инструментов качественная (я не использовал функцию записи Automator), и вы также получаете все другие преимущества инструментов.
Действительно, сценарии пользовательского интерфейса хрупки и привередливы, но вы могли бы взглянуть на Страница сценариев графического интерфейса AppleScript