Partilhar via


Obtendo elementos da automação interface do usuário

Este tópico descreve o Diversos maneiras de obter AutomationElement Os objetos para Os elementos.

Cuidado:

Se a aplicativo cliente pode tentar localizar elementos no seu próprio interface do usuário, você deve fazer todos os As chamadas em um segmento separado.Para obter mais informações, consulte Problemas de Threading na Automação da Interface do Usuário.

Este tópico contém as seguintes seções.

Elemento Raiz

Todas as pesquisas para AutomationElement Objetos devem ter um local inicial.Isso pode ser qualquer elemento, incluindo a área de trabalho, um janela do aplicativo ou um controle.

O elemento raiz para a área de trabalho, do qual todos os elementos são descended, são obtidas do estático AutomationElement.RootElement Propriedade.

Cuidado:

Em geral, você deve tentar obter apenas filhos diretos das RootElement.Uma pesquisa por descendentes pode percorrer centenas ou mesmo milhares de elementos, possivelmente, resultando em um estouro de pilha.Se você estiver tentando obter um elemento específico em um nível inferior, você deve iniciar sua pesquisa a partir de janela do aplicativo ou um recipiente em um nível inferior.

Condições

Para a maioria das técnicas você pode usar para recuperar elementos, você deve especificar um Conditionque é um conjunto de critérios definir quais elementos você deseja recuperar.

A condição mais simples é [F:System.Windows.Automation.Condição.TrueCondição]Um objeto predefinido especificando que todos os elementos dentro do escopo de pesquisa estão a ser retornado.FalseConditiona conversar de [F:System.Windows.Automation.Condição.TrueCondição]é menos útil, como ele pr evento os elementos de sendo encontrado.

Três outras condições predefinidas podem ser usadas isoladamente ou em combinação com outras condições: ContentViewCondition, ControlViewConditione RawViewCondition.RawViewConditionUsada por si só, é equivalente a [F:System.Windows.Automation.Condição.TrueCondição]porque ele não Filtro elementos por seus IsControlelemento() ou IsContentElement Propriedades.

Outras condições são criadas backup de um ou mais PropertyCondition objetos, cada um deles especifica um valor da propriedade.Por exemplo, um PropertyCondition Pode especificar que o elemento está habilitado, ou que ele oferece suporte um certo controle padrão.

Condições podem ser combinadas usando Lógica Booleanoa construindo objetos de tipos AndCondition, OrConditione NotCondition.

Escopo de pesquisa

Pesquisas Concluído usando FindFirst ou FindAll deve ter um escopo, bem como um local inicial.

O escopo define o espaço ao redor de local inicial que será pesquisado.Isso pode incluir o próprio elemento, seus irmãos, seu pai, seus ancestrais, seus filhos imediatos e seus descendentes.

O escopo de uma pesquisa é definido por um combinação bit a bit de valores a partir de TreeScope Enumeração.

Localizar um elemento conhecidos

Para localizar um elemento conhecido, identificado por seu Name, AutomationIdou alguma outra propriedade ou combinação de propriedades, é mais fácil usar o FindFirst Método.Se o elemento procurado for um janela do aplicativo, o ponto inicial da pesquisa pode ser o RootElement.

Dessa maneira de localizar Elementos é mais útil nos cenários de teste automatizados.

Localizar elementos em uma subárvore

Para Localizar tudo elementos de reunião critérios específicos relacionados a um elemento conhecido, você pode usar FindAll.Por exemplo, você pode usar esse método para recuperar itens da lista ou itens de menu a partir de uma lista ou menu, ou para identificar todos os controles em um caixa de diálogo.

Caminhando uma subárvore

Se você tiver nenhum conhecimento prévio dos aplicativos que o cliente pode ser usada com, você pode CON struct uma subárvore de todos os elementos de interesse usando o TreeWalker a classe.O aplicativo pode fazer isso em resposta a um evento foco-alterado; Ou seja, quando um aplicativo ou o controle recebe foco de entrada, o Cliente de Automação interface do usuário Examina filhos e talvez todos os descendentes do elemento focalizado atualmente.

Outra maneira na qual TreeWalker Pode ser usado é para identificar os predecessores de um elemento.Por exemplo, você pode identificar a janela pai de um controle por caminhando para cima a árvore.

Você pode usar TreeWalker Um criando um objeto da classe (definindo os elementos de juros, passando um Condition, ou usando um dos seguintes objetos que são definidos como campos de predefinidos TreeWalker.

ContentViewWalker

Localiza apenas os elementos cujo IsContentElement Propriedade é verdadeiro.

ControlViewWalker

Localiza apenas os elementos cujo IsControlelemento() Propriedade é verdadeiro.

RawViewWalker()

Localizando todos os elementos.

Depois de obter um TreeWalkerUsando-é reta Avançar.Basta chamar o Get Métodos para navegar entre elementos da subárvore.

O Normalize(Automationelemento) Método pode ser usado para navegar para um elemento a subárvore de outro elemento que não é parte do modo de exibição.Por exemplo, suponha que você tenha criado um modo de exibição de uma subárvore usando ContentViewWalker.Seu aplicativo, em seguida, recebe notificação que um barra de rolagem recebeu a foco de entrada.Como um barra de rolagem é não um elemento de conteúdo, ele não está presente no modo de exibição da subárvore.No entanto, você pode passar a AutomationElement Representando o barra de rolagem para Normalize(Automationelemento) e recuperar o predecessor mais próximo que esteja no modo de exibição de conteúdo.

Outras formas para recuperar um elemento

Além disso, para navegação e pesquisa, você pode recuperar uma AutomationElement nos seguintes aspectos.

De um evento

Quando seu aplicativo recebe um Evento, o objeto passado para o manipulador de eventos de origem é um AutomationElement.Por exemplo, se você se inscreveu para eventos foco-alterado, a fonte passado para o AutomationFocusChangedEventHandler é o elemento que recebido o foco.

Para obter mais informações, consulte Registre-se em Eventos de Automação de Interface do Usuário.

De um ponto

Se você tiver coordenadas de tela (por exemplo, uma posição do cursor), você poderá recuperar uma AutomationElement Usando o estático FromPoint Método.

De um identificador da janela

Para recuperar uma AutomationElement de De HWND, use o estático FromHandle(IntPtr) Método.

A partir de Controle com Foco

Você pode recuperar uma AutomationElement que representa o Controlarar focalizado atualmente a partir de estático FocusedElement Propriedade.

Consulte também

Tarefas

Localizar um elemento de automação de interface do usuário com base na condição de uma propriedade

Navigate Among UI Automation Elements with TreeWalker

Conceitos

Visão geral da árvore de automação de interface do usuário