Compartilhar via


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

Observação

Esta documentação destina-se a desenvolvedores do .NET Framework que desejam usar as classes de Automação de Interface do Usuário gerenciadas definidas no namespace System.Windows.Automation. Para obter as informações mais recentes sobre Automação de Interface do Usuário, consulte API de Automação do Windows: Automação de Interface do Usuário.

Os produtos de tecnologia adaptativa e os scripts de teste navegam na árvore de Automação da Interface do Usuário para coletar informações sobre a interface do usuário (interface do usuário) e seus elementos.

Na árvore de Automação da Interface do Usuário, há um elemento raiz (RootElement) que representa a área de trabalho atual e cujos elementos filho representam janelas do aplicativo. Cada um desses elementos filho pode conter elementos que representam partes da interface do usuário como menus, botões, barras de ferramentas e caixas de listagem. Esses elementos, por sua vez, podem conter elementos como itens de lista.

A árvore de Automação da Interface do Usuário não é uma estrutura fixa e raramente é vista em sua totalidade porque pode conter milhares de elementos. Partes dele são criadas conforme são necessárias e podem passar por alterações à medida que os elementos são adicionados, movidos ou removidos.

Os provedores de Automação da Interface do Usuário dão suporte à árvore de Automação da Interface do Usuário implementando a navegação entre itens dentro de um fragmento, que consiste em uma raiz (geralmente hospedada em uma janela) e uma subárvore. No entanto, os provedores não estão preocupados com a navegação de um controle para outro. Isso é gerenciado pelo núcleo de Automação da Interface do Usuário, usando informações dos provedores de janela padrão.

Visões da árvore de automação

A árvore de Automação da Interface do Usuário pode ser filtrada para criar exibições que contêm apenas os AutomationElement objetos relevantes para um cliente específico. Essa abordagem permite que os clientes personalizem a estrutura apresentada por meio da Automação da Interface do Usuário de acordo com suas necessidades específicas.

O cliente tem duas maneiras de personalizar o modo de exibição: por escopo e filtragem. O escopo está definindo a extensão da exibição, começando a partir de um elemento base: por exemplo, o aplicativo pode querer localizar apenas filhos diretos da área de trabalho ou todos os descendentes de uma janela do aplicativo. A filtragem está definindo os tipos de elementos que devem ser incluídos na exibição.

Os provedores de Automação da Interface do Usuário dão suporte à filtragem definindo propriedades em elementos, incluindo as IsControlElementProperty e IsContentElementProperty propriedades.

A Automação da Interface do Usuário fornece três exibições padrão. Essas exibições são definidas pelo tipo de filtragem executada; o escopo de qualquer exibição é definido pelo aplicativo. Além disso, o aplicativo pode aplicar outros filtros nas propriedades; por exemplo, para incluir apenas controles habilitados em um modo de exibição de controle.

Modo de Exibição Bruto

O modo de exibição bruto da árvore de automação da IU é a árvore completa de objetos AutomationElement para os quais a área de trabalho é a raiz. A exibição bruta segue de perto a estrutura programática nativa de um aplicativo e, portanto, é a exibição mais detalhada disponível. É também a base sobre a qual as outras visões da árvore são formadas. Como essa exibição depende da estrutura de interface do usuário subjacente, a exibição bruta de um botão do WPF terá uma exibição bruta diferente de um botão Win32.

A exibição bruta é obtida pesquisando elementos sem especificar propriedades ou usando a RawViewWalker para navegar na árvore.

Modo de Exibição de Controle

A exibição de controle da árvore de Automação da Interface do Usuário simplifica a tarefa do produto de tecnologia assistiva de descrever a interface do usuário para usuário final e ajudar o usuário final a interagir com o aplicativo, uma vez que mapeia de forma próxima a estrutura da interface do usuário percebida por um usuário final.

A exibição de controle é um subconjunto da exibição bruta. Ele inclui todos os itens da UI na visualização original que um usuário final entenderia como interativos ou que contribuem para a estrutura lógica do controle na interface. Exemplos de itens de interface do usuário que contribuem para a estrutura lógica da interface do usuário, mas não são interativos, são contêineres de itens, como cabeçalhos de exibição de lista, barras de ferramentas, menus e a barra de status. Itens não interativos usados simplesmente para fins de layout ou decorativos não serão vistos na visão de controle. Um exemplo é um painel que foi usado apenas para definir os controles em uma caixa de diálogo, mas não contém nenhuma informação. Itens não interativos que serão vistos no modo de exibição de controle são gráficos com informações e texto estático em uma caixa de diálogo. Itens não interativos incluídos no modo de exibição de controle não podem receber o foco do teclado.

A exibição de controle é obtida pesquisando elementos que têm a IsControlElement propriedade definida como true, ou usando a ControlViewWalker para navegar na árvore.

Exibição de conteúdo

A exibição de conteúdo da árvore de automação da IU é um subconjunto da exibição de controle. Ele contém itens de interface do usuário que transmitem as informações verdadeiras em uma interface do usuário, incluindo itens de interface do usuário que podem receber o foco do teclado e algum texto que não seja um rótulo em um item de interface do usuário. Por exemplo, os valores em uma caixa de combinação suspensa aparecerão na exibição de conteúdo porque representam as informações que estão sendo usadas por um usuário final. No modo de exibição de conteúdo, uma caixa de combinação e uma caixa de listagem são representadas como uma coleção de itens de interface do usuário em que um ou talvez mais de um item pode ser selecionado. O fato de estar sempre aberto e poder expandir e recolher é irrelevante na exibição de conteúdo, pois foi projetada para mostrar os dados ou conteúdo que está sendo apresentado ao usuário.

A visualização do conteúdo é obtida procurando elementos com a propriedade IsContentElement configurada como true, ou utilizando o ContentViewWalker para navegar na árvore.

Consulte também