Como saber o nome dos elementos da interface do usuário usando o Inspetor de acessibilidade (ou qualquer outra ferramenta)

21

Estou tentando interagir com uma caixa de diálogo de impressão via Applescript.

O que eu quero emular é o usuário definindo um valor em um menu suspenso específico.

Diga que tenho:

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

Como devo saber o nome XXX? Por exemplo, como eu distinguiria entre as listas suspensas "impressora" e "predefinições"?

Eu abri o Inspetor de acessibilidade, mas pelas informações exibidas lá, não consigo identificar uma referência ao nome ou algum outro identificador exclusivo para o menu suspenso especificado.

Já vi muitas pessoas usando números para se referir a diferentes menus suspensos, mas não tenho certeza se isso é uma boa prática. O que acontece se a Apple decidir trocar a ordem de duas listas suspensas em algum momento?

Qualquer ajuda seria apreciada.

ATUALIZAÇÃO :

Usando 10.6.8 e inspector, como sugerido abaixo, obtenho o seguinte:

insira a descrição da imagem aqui

Roberto Aloi
fonte
Encontrei o UI elementscomando aqui útil também: n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript
phs
Aqui está um link para outra página em Ask Different que está vinculada à página atual, chamada: AppleScript - Como obter nomes, atributos, propriedades e classes dos elementos da interface do usuário programaticamente sem "adivinhar" pelo Inspetor de Acessibilidade? (Esta questão aqui foi a razão pela qual eu queria aprender alguns fatos básicos sobre "como fazer" ...)
clemsam lang

Respostas:

15

ATUALIZAR. isso funcionará no 10.7.x, mas 10.6 possui as informações do elemento.

Os botões (suspensos) na Folha de impressão têm Descrição para descrever a função.

Em inspector de acessibilidade ; você vê isso ao passar o mouse sobre o elemento (botão). você pode bloquear a exibição do inspetor de acessibilidade com cmd + F7.

A descrição será listada como AXDescription

insira a descrição da imagem aqui

Nos casos das impressoras, é Impressoras para predefinições, é Predefinições

Se você conhece o AXDescription, pode evitar os números usando algo como isto. Mas esse não é o único caminho. Apenas um exemplo.

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

Para que o acima funcione neste exemplo, a Folha de impressão deve estar visível junto com 'Mostrar detalhes'

O botão / lista suspensa possui um menu. Para que você possa selecionar ou clicar nele, consulte o itens de menu do menu do botão.

Por número ou usando seu título / 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

Você pode reduzir o código repetitivo usando uma variável para o botão e chamando isso. Ao fazer isso como no meu exemplo abaixo;

   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
markhunte
fonte
4

Para quem se pergunta, parece que um local onde encontrar o Inspetor de Acessibilidade na versão 10.7 é:

/Applications/Xcode.app/Contents/Applications

Arnaud P
fonte
1

Recentemente, escrevi meu fluxo de trabalho para scripts de interface do usuário no AppleScript .

Em resumo, o principal componente que facilitou muito as coisas para mim foi aprender que o UI Elementscomando no AppleScript retorna uma lista dos termos que o AppleScript Editor deseja ver para chamar os Elementos da UI. Faça a interface com os termos vistos no Accessibility Inspector (que geralmente são um pouco diferentes) para criar um script de trabalho.

n8henrie
fonte