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

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

Na árvore Automação da Interface do Usuário é um elemento raiz que representa a janela da área de trabalho do Windows ("a área de trabalho") 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 podem conter elementos, como itens de lista.

A árvore Automação da Interface do Usuário não é uma estrutura fixa. Raramente é visto em sua totalidade porque pode conter milhares de elementos. Partes da árvore Automação da Interface do Usuário são criadas conforme um cliente precisa delas, e a estrutura da árvore muda à medida que os elementos são adicionados, movidos ou removidos.

Automação da Interface do Usuário provedores dão suporte à árvore de Automação da Interface do Usuário implementando a navegação entre os itens em um fragmento. Um fragmento é uma subárvore completa de elementos de uma estrutura específica e tem um elemento raiz (chamado de raiz de fragmento) que normalmente é hospedado em uma janela.

Os provedores não estão preocupados com a navegação de um controle para outro. Isso é gerenciado pelo núcleo Automação da Interface do Usuário, que usa informações dos provedores de janela padrão.

Este tópico inclui as seções a seguir.

Exibições da árvore de Automação da Interface do Usuário

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

O cliente pode personalizar a exibição por escopo e filtragem. O escopo está definindo a extensão da exibição, começando de um elemento base. Por exemplo, o aplicativo pode querer encontrar apenas filhos diretos da área de trabalho ou todos os descendentes de uma janela de aplicativo. A filtragem está definindo os tipos de elementos incluídos na exibição.

Automação da Interface do Usuário provedores dão suporte à filtragem definindo propriedades em elementos, incluindo as propriedades IUIAutomationElement::IsControlElement e IUIAutomationElement::IsContentElement.

Automação da Interface do Usuário fornece três exibições padrão: exibição bruta, exibição de controle e exibição de conteúdo. Essas exibições são definidas pelo tipo de filtragem executada. O escopo de qualquer exibição é definido pelo aplicativo. O aplicativo pode aplicar outros filtros em propriedades; por exemplo, para incluir apenas controles habilitados em uma exibição de controle.

Modo de exibição bruto

A exibição bruta da árvore Automação da Interface do Usuário é a árvore completa dos elementos de automação para os quais a área de trabalho é a raiz. A exibição bruta acompanha de perto a estrutura programática nativa de um aplicativo e é 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, a exibição bruta de um botão de Windows Presentation Foundation (WPF) tem uma exibição bruta diferente de um botão Do Microsoft Win32.

A exibição bruta é obtida pesquisando elementos sem especificar propriedades ou usando o IUIAutomation::RawViewWalker para obter uma interface IUIAutomationTreeWalker para navegar na árvore.

Exibição de controle

A exibição de controle é um subconjunto do modo de exibição bruto. Ele inclui apenas os itens de interface do usuário que têm a propriedade IUIAutomationElement::IsControlElement definida como TRUE.

A exibição de controle inclui os itens de interface do usuário que fornecem informações ao usuário ou permitem que o usuário execute uma ação. Esses são os itens de interface do usuário que são mais interessantes para aplicativos de teste automatizados.

A exibição de controle também inclui itens de interface do usuário não interinterativos que contribuem para a estrutura lógica da interface do usuário. Isso inclui contêineres de itens, como cabeçalhos de exibição de lista, barras de ferramentas, menus e a barra de status. Outros itens não interinterativos que aparecem na exibição de controle são gráficos com informações e texto estático em uma caixa de diálogo.

Os itens não interativos usados apenas para layout ou para fins decorativos, como painéis usados para dispor controles em uma caixa de diálogo, não aparecem no modo de exibição de controle.

A exibição de controle da árvore Automação da Interface do Usuário é mapeada de perto para a estrutura da interface do usuário percebida por um usuário final. Isso torna mais fácil para o produto de tecnologia adaptativa descrever a interface do usuário para o usuário final e ajudar o usuário final a interagir com o aplicativo.

A exibição de controle é obtida pesquisando elementos que têm a propriedade IUIAutomationElement::IsControlElement definida como true ou usando ControlViewWalker para obter uma interface IUIAutomationTreeWalker 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 inclui apenas os itens de interface do usuário que têm a propriedade IUIAutomationElement::IsControlElement e a propriedade IUIAutomationElement::IsContentElement definida como TRUE.

A exibição de conteúdo contém itens de interface do usuário que transmitem as informações reais 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. Esses são os itens de interface do usuário que são mais interessantes para um aplicativo de leitor de tela. Por exemplo, os valores em uma caixa de combinação suspensa aparecem na exibição de conteúdo porque os valores representam 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 mais de um item pode ser selecionado. O fato de que um item está sempre aberto e um item pode expandir e recolher é irrelevante na exibição de conteúdo porque ele foi projetado para mostrar os dados ou o conteúdo que está sendo apresentado ao usuário.

A exibição de conteúdo é obtida pesquisando elementos que têm a propriedade IsControlElement e CurrentIsContentElement definida como TRUE ou usando IUIAutomation::ContentViewWalker para obter uma interface IUIAutomationTreeWalker para navegar na árvore.

As imagens a seguir mostram as diferenças entre a exibição de controle e a exibição de conteúdo. A primeira imagem mostra uma caixa de combinação simples com três itens na lista suspensa. A segunda imagem mostra como os itens da interface do usuário da caixa de combinação aparecem nas exibições de controle e conteúdo do aplicativo UISpy.exe.

captura de tela de uma caixa de combinação simples com três itens suspensos

captura de tela do aplicativo uispy com exibições de controle e conteúdo de itens de caixa de combinação

Conceitual

Criando o objeto CUIAutomation

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

Conceitos básicos de automação da interface do usuário