7

Допустим, я хочу нажать кнопку, которая появляется где-то внутри окна, используя AppleScript. click button работает, но вы должны знать, какую именно кнопку вы хотите нажать.


Например: Сканирование немного громоздко, когда вам всегда нужно дождаться завершения работы сканера, затем переключитесь на Image Capture.app и снова нажмите « Сканировать» .

Итак, я хочу автоматизировать, нажав эту кнопку здесь ...

Ну, я подумал, что это будет относительно легко, но в начале это так, как я понял:

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of window "Image Capture"
    end tell
end tell

Конечно, кнопка зарыта глубже, чем это (то есть в некоторой группе разделения).

С Инспектором Доступности я могу видеть, где он находится, но действительно ли мне нужно идти вниз по дереву элементов пользовательского интерфейса, чтобы найти кнопку? Есть ли какой-нибудь ярлык? Если нет, то чего мне не хватает в click button "Scan" of window "Image Capture"?

Более общий: где я могу найти кнопку в иерархии элементов пользовательского интерфейса?

3 ответа3

9

Если кнопка недоступна напрямую, возможно, вам придется угадывать.

Что работает в Высокой Сьерре это:

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of group 2 of splitter group 1 of window "Image Capture"
    end tell
end tell

В старых выпусках macOS, возможно, придется использовать group 1 .

Другой обходной путь - активировать окно и нажать клавишу пробела:

tell application "Image Capture"
    activate
    tell application "System Events" to key code 49
end tell

Вы можете попытаться закрыть его, выполнив такие команды:

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

или, как сказал @Lri в комментариях:

properties of UI elements of window 1
properties of UI elements of UI elements of window 1

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

1

В MacOS High Sierra 10.13.6 и Image Capture 7.0 вышеуказанный ответ работал с этой небольшой модификацией:

tell application "System Events"
    tell process "Image Capture"
        click button "Scan" of group 2 of splitter group 1 of window "Image Capture"
    end tell
end tell
0

Это сработало для меня:

entire contents of window 1

когда это подошло к концу:

UI elements of window 1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .