Как узнать имя элементов пользовательского интерфейса с помощью инспектора доступности (или любого другого инструмента)


21

Я пытаюсь взаимодействовать с диалоговым окном печати через Applescript.

То, что я хочу эмулировать, - это пользователь, устанавливающий значение для определенного раскрывающегося списка.

Скажи, что у меня есть:

tell application "System Events"
  tell process "Preview"
    set value of pop up button XXX to YYY
  end tell
end tell

Откуда мне знать имя XXX? Например, как мне отличить выпадающие списки «принтер» и «пресеты»?

Я открыл инспектор специальных возможностей, но по отображаемой там информации я не могу найти ссылку на имя или какой-либо другой уникальный идентификатор для указанного раскрывающегося списка.

Я видел много людей, использующих числа для обозначения другого выпадающего списка, но я не уверен, что это хорошая практика. Что произойдет, если Apple решит поменять местами порядок двух выпадающих меню?

Любая помощь будет оценена.

ОБНОВЛЕНИЕ :

Используя 10.6.8 и инспектора, как предложено ниже, я получаю следующее:

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


Я нашел UI elementsкоманду здесь полезно , как хорошо: n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript
PHS

Вот ссылка на другую страницу в Ask Different, которая связана с текущей страницей и называется: AppleScript. Как программно получить имена, атрибуты, свойства, классы элементов пользовательского интерфейса, не «догадываясь» с помощью инспектора доступности? (Этот вопрос был причиной, по которой я хотел узнать некоторые основные факты о том, как это сделать…)
clemsam lang

Ответы:


15

ОБНОВИТЬ. это будет работать в 10.7.x, но 10.6 имеет информацию о элементах les.

Кнопки (раскрывающиеся списки) на листе печати имеют описание для описания функции.

В инспектор доступности ; Вы видите это, когда наводите указатель мыши на элемент (кнопку). Вы можете заблокировать вид инспектора специальных возможностей с помощью cmd + F7.

Описание будет указано как AXDescription

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

В случаях для принтеров это принтеры для пресетов это пресеты

Если вы знаете AXDescription, вы можете избежать чисел, используя что-то вроде этого. Но это не единственный способ. Всего один пример.

activate application "Preview"
tell application "System Events"
    tell process "Preview"
        click ((pop up buttons of sheet 1 of window 1) whose description is "Printers")
    end tell
end tell

Чтобы вышеперечисленное работало в этом примере, лист печати должен быть виден вместе с «Показать детали»

Кнопка / выпадающий имеет меню. Таким образом, вы можете выбрать или щелкнуть его, ссылаясь на пункты меню в меню кнопки.

Либо по номеру, либо используя его заголовок / AXTitle.

activate application "Preview"
    tell application "System Events"
        tell process "Preview"
            click ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

click menu item "Last Used Settings" of menu of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")
        end tell
    end tell

Вы можете сократить повторяющийся код, используя переменную для кнопки и вызывая ее. Делая это, как мой пример ниже;

   activate application "Preview"
tell application "System Events"
    tell process "Preview"
        set Presets_button to item 1 of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

        click Presets_button
        click menu item "Last Used Settings" of menu of Presets_button
    end tell
end tell

5

Используйте один из сценариев, связанных в этой подсказке Mac OS X, чтобы найти соответствующую форму адреса: Поиск элементов управления и элементов меню для использования в сценариях пользовательского интерфейса AppleScript

IIRC, вам нужно нажать кнопку (cmd in в системных событиях) кнопку всплывающего меню, прежде чем вы сможете выбрать пункт меню из его меню.


4

Для тех, кто задается вопросом, кажется, что единственное место, где можно найти инспектора доступности в 10.7:

/Applications/Xcode.app/Contents/Applications


1

Недавно я написал свой рабочий процесс для сценариев пользовательского интерфейса в AppleScript .

Короче говоря, ключевым компонентом, который значительно облегчил мне задачу, было узнать, что UI Elementsкоманда в AppleScript возвращает список терминов, которые редактор AppleScript хочет видеть для вызова элементов пользовательского интерфейса. Сопоставьте это с терминами, доступными в Accessibility Inspector (которые часто немного отличаются) для создания работающего скрипта.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.