Visão geral da árvore de automação de interface do usuário
Observação
Esta documentação destina-se a desenvolvedores de .NET Framework que querem usar as classes da Automação da Interface do Usuário gerenciadas definidas no namespace System.Windows.Automation. Para obter as informações mais recentes sobre a Automação da Interface do Usuário, confira API de Automação do Windows: Automação da Interface do Usuário.
Os produtos de tecnologia adaptativa e os scripts de teste navegam na árvore de automação da IU para coletar as informações sobre a IU (interface do usuário) e seus elementos.
Na árvore de automação da IU há um elemento raiz (RootElement) que representa a área de trabalho atual e cujos elementos filho representam as 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 IU não é uma estrutura fixa e raramente é vista em sua totalidade, pois pode conter milhares de elementos. Partes dela 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 IU implementando a navegação entre os itens em 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 IU, usando as informações dos provedores de janela padrão.
Exibições da Árvore de Automação
A árvore de automação da IU pode ser filtrada para criar exibições que contêm apenas os objetos AutomationElement relevantes para um cliente específico. Essa abordagem permite que os clientes personalizem a estrutura apresentada por meio da árvore de automação da IU para suas necessidades específicas.
O cliente tem duas maneiras de personalizar a exibição: por escopo e por 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. Filtrar é definir os tipos de elementos que deverão ser incluídos na exibição.
Os provedores de Automação da Interface do Usuário dão suporte à filtragem definindo as propriedades em elementos, incluindo as propriedades IsControlElementProperty e IsContentElementProperty.
A árvore de automação da IU fornece três exibições padrão. Essas exibições são definidas pelo tipo de filtragem realizada, e o escopo de qualquer exibição é definido pelo aplicativo. Além disso, o aplicativo poderá aplicar outros filtros nas propriedades, por exemplo, para incluir apenas controles habilitados em uma 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. O modo de exibição bruto segue de perto a estrutura programática nativa de um aplicativo e, portanto, é a exibição mais detalhada disponível. É também a base na qual as outras exibições da árvore são construídas. Como essa exibição depende da estrutura de interface do usuário subjacente, o modo de exibição bruto de um botão WPF terá um modo de exibição bruto diferente de um botão Win32.
O modo de exibição bruto é obtido pesquisando os elementos sem especificar propriedades ou usando RawViewWalker para navegar na árvore.
Exibição de controle
A exibição de controle da árvore de automação da IU simplifica a tarefa do produto de tecnologia adaptativa de descrever a interface do usuário para o usuário final e ajudar esse usuário final a interagir com o aplicativo porque mapeia de perto a estrutura de interface do usuário percebida por um usuário final.
A exibição de controle é um subconjunto do modo de exibição bruto. Ele inclui todos os itens da interface do usuário do modo de exibição bruto que um usuário final entenderia como interativo ou contribuindo para a estrutura lógica do controle na interface do usuário. 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 apenas para layout ou fins decorativos não serão vistos na exibição de controle. Um exemplo é um painel que foi usado apenas para dispor os controles em uma caixa de diálogo, mas não contém nenhuma informação. Os itens não interativos que serão vistos na 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 na exibição de controle não podem receber o foco do teclado.
A exibição de conteúdo é obtida procurando os elementos que tenham a propriedade IsControlElement 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. Ela contém itens de interface do usuário que transmitem as informações verdadeiras em uma interface do usuário, incluindo os itens de interface do usuário que podem receber 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. Na 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 onde 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 exibição de conteúdo é obtida procurando os elementos que tenham a propriedade IsContentElement definida como true
, ou usando a ContentViewWalker para navegar na árvore.