Определите имена окон, групп и текстовых полей Mac OS X для использования в AppleScript

8

У меня есть Applescript, в котором я хочу установить значение текстовых полей Nameи Passwordокна, принадлежащего процессу SecurityAgent.

Это похоже на следующее:

tell window "Authenticate" of process "SecurityAgent"
    tell group 1
        set value of text field 1 to "king"
        set value of text field 2 to "king1"
    end tell
    click button "OK" of group 2
end tell 

В то время как мой сценарий также ссылается на процесс SecurityAgent, окно, о котором идет речь, всплывает, когда вы закрываете OS X, и другой пользователь входит в систему. SecurityAgentПоявляется окно, запрашивающее имя пользователя и пароль администратора для завершения Завершить процесс. Я не знаю, как ссылаться на текстовые поля в указанном окне.

У меня вопрос, как мне узнать название этих текстовых полей, группу, к которой они принадлежат, и окно, к которому они принадлежат? Есть ли способ сопоставления окон OS X, чтобы я мог ссылаться на них в AppleScript? Кажется, я нигде не могу найти информацию об этом.

stefmikhail
источник

Ответы:

9

Однажды я попытался нажать кнопку в приложении «Захват изображений», и мне потребовалось некоторое время, чтобы найти эту конкретную кнопку. Как объясняется в моем вопросе / ответе, есть способ, использующий UIElementInspector . Вы можете скачать его бесплатно от Apple (ссылка для скачивания находится вверху кнопки, прямая ссылка здесь ).

Это позволяет вам заглядывать в элементы пользовательского интерфейса каждого окна, в котором вы находитесь. Нажатие Cmd- F7фиксирует его содержимое на элементе, который вы зависаете.

введите описание изображения здесь

«Веселая» часть на самом деле выясняет, как сгруппировано окно и какие элементы принадлежат какому родительскому элементу. Обозреватель пользовательского интерфейса приложения за 55 долларов заявляет, что справляется с этим лучше.

Когда вы вручную отлаживаете AppleScript и находитесь в области видимости окна, вы можете попытаться угадать свой путь к отдельным элементам, используя такие команды, как:

UI elements of window 1
UI elements of splitter group 1 of window 1
UI elements of group 1 of splitter group 1 of window 1

Это даст вам список, который вы можете использовать, чтобы сузить свой поиск элементов и их соответствующих названий.

slhck
источник
1
+100 за сообщение мне о UIElementInspector
Nifle
@slhck - Ух ты! Какой фантастический ответ. Это очень ценится, и я немедленно приступлю к работе над этим. Любопытно, однако, поскольку я новичок в AppleScript в целом; Как бы я сделал UI elementsкоманды?
stefmikhail
1
@Stef Ну, например UI Elements of window "Authenticate" of process .... Просто сделайте это в редакторе AppleScript и посмотрите на результаты внизу. К сожалению, я не нашел более эффективного способа сделать это.
Slhck
@slhck - Нет-нет, это звучит идеально. И, наконец, UI Browser предлагает полнофункциональную пробную версию на один месяц, так что я тоже смогу попробовать. Еще раз спасибо большое.
stefmikhail
@stefmikhail Конечно, нет проблем! Дайте мне знать, как работает UI Browser, у вас еще не было времени попробовать!
Slhck