Como automatizar o clique em um botão na janela de um aplicativo com o AppleScript?

7

Digamos que eu queira clicar em um botão que aparece em algum lugar dentro de uma janela, usando o AppleScript. click button funciona, mas você precisa saber qual botão exatamente deseja pressionar.

Por exemplo: A digitalização é um pouco trabalhosa quando você sempre precisa esperar que o scanner termine, depois mude para o Image Capture.app, depois clique em Scan novamente.

Então, eu quero automatizar clicando neste botão aqui ...

Bem,acheiqueseriarelativamentefácil,masnocomeçoissoéomaisimportante:

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

É claro que o botão está enterrado mais fundo do que isso (ou seja, em algum grupo dividido).

Com o Inspetor de acessibilidade , posso ver onde está, mas eu realmente tenho que descer a árvore de elementos da interface do usuário para encontrar o botão? Existe algum atalho? Se não, o que estou perdendo em click button "Scan" of window "Image Capture" ?

Mais geral: Onde encontro um botão na hierarquia de elementos da interface do usuário?

    
por slhck 16.09.2011 / 23:15

3 respostas

9

Se o botão não estiver disponível diretamente, talvez seja necessário adivinhar.

O que funciona na High Sierra é:

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

Em versões mais antigas do macOS, pode ser necessário usar group 1 .

Outra solução seria ativar a janela e pressionar a barra de espaço:

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

Você pode tentar aproximar-se executando comandos como:

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

ou, como @Lri disse nos comentários:

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

Isso apresentará uma lista de elementos contidos e você poderá adivinhar o caminho até lá.

    
por 16.09.2011 / 23:18
1

No MacOS High Sierra 10.13.6 e no Image Capture 7.0, a resposta acima funcionou com esta pequena modificação:

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
    
por 26.10.2018 / 01:10
0

Isso funcionou para mim:

entire contents of window 1

quando isso acontece:

UI elements of window 1
    
por 12.10.2013 / 00:17