Partilhar via


Usando a automação da interface do usuário para testes automatizados

Observação

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

Esta visão geral descreve como a Automação da Interface do Usuário da Microsoft pode ser útil como uma estrutura para acesso programático em cenários de teste automatizado.

A Automação da Interface do Usuário fornece um modelo de objeto unificado que permite que todas as estruturas de interface do usuário (UI) exponham funcionalidades complexas e ricas de forma acessível e facilmente automatizada.

UI Automation foi desenvolvido como um sucessor do Microsoft Ative Accessibility. Ative Accessibility é uma estrutura existente projetada para fornecer uma solução para tornar os controles e aplicativos acessíveis. A Acessibilidade Ativa não foi projetada com a automação de testes em mente, embora tenha evoluído para essa função devido aos requisitos muito semelhantes de acessibilidade e automação. A automação da interface do usuário, além de fornecer soluções mais refinadas para acessibilidade, também foi projetada especificamente para fornecer funcionalidade robusta para testes automatizados. Por exemplo, a Acessibilidade Ativa depende de uma única interface para expor informações sobre a interface do usuário e coletar as informações necessárias para os produtos AT; A automação da interface do usuário separa os dois modelos.

Tanto um provedor quanto um cliente são obrigados a implementar a automação da interface do usuário para que ela seja útil como uma ferramenta de teste automatizada. Os provedores de automação da interface do usuário são aplicativos como o Microsoft Word, Excel e outros aplicativos ou controles de terceiros baseados no sistema operacional Microsoft Windows. Os clientes de automação da interface do usuário incluem scripts de teste automatizados e aplicativos de tecnologia assistiva.

Observação

A intenção desta visão geral é mostrar os novos e aprimorados recursos de teste automatizado da Automação da Interface do Usuário. Esta visão geral não se destina a fornecer informações sobre recursos de acessibilidade e não abordará a acessibilidade a não ser quando necessário.

Automação da interface do usuário em um provedor

Para que uma interface do usuário seja automatizada, um desenvolvedor de um aplicativo ou controle deve examinar quais ações um usuário final pode executar no objeto da interface do usuário usando a interação padrão de teclado e mouse.

Uma vez que essas ações-chave tenham sido identificadas, os padrões de controle de automação da interface do usuário correspondentes (ou seja, os padrões de controle que espelham a funcionalidade e o comportamento do elemento da interface do usuário) devem ser implementados no controle. Por exemplo, a interação do usuário com um controle de caixa de combinação (como a caixa de diálogo de execução) normalmente envolve expandir e recolher a caixa de combinação para ocultar ou exibir uma lista de itens, selecionar um item dessa lista ou adicionar um novo valor por meio da entrada do teclado.

Observação

Com outros modelos de acessibilidade, os desenvolvedores devem coletar informações diretamente de botões, menus ou outros controles individuais. Infelizmente, cada tipo de controle vem em dezenas de pequenas variações. Em outras palavras, mesmo que dez variações de um botão possam funcionar da mesma maneira e executar a mesma função, todas elas devem ser tratadas como controles exclusivos. Não há como saber se esses controles são funcionalmente equivalentes. Padrões de controle foram desenvolvidos para representar esses comportamentos de controle comuns. Para obter mais informações, consulte a Visão Geral dos Padrões de Controlo de Automação da Interface do Utilizador .

Implementando a automação da interface do usuário

Como mencionado anteriormente, sem o modelo unificado fornecido pela Automação da Interface do Usuário, as ferramentas de teste e os desenvolvedores são obrigados a conhecer informações específicas da estrutura para expor propriedades e comportamentos de controles nessa estrutura. Como pode haver várias estruturas de interface do usuário diferentes presentes a qualquer momento nos sistemas operacionais Windows, incluindo Win32, Windows Forms e Windows Presentation Foundation (WPF), pode ser uma tarefa assustadora testar vários aplicativos com controles que parecem semelhantes. Por exemplo, a tabela a seguir descreve os nomes de propriedade específicos da estrutura necessários para recuperar o nome (ou texto) associado a um controle de botão e mostra a única propriedade equivalente de Automação da Interface do Usuário.

Tipo de controle de automação da interface do usuário Estrutura da interface do usuário Propriedade específica do framework Propriedade de automação da interface do usuário
Botão Windows Presentation Foundation Conteúdo NomePropriedade
Botão Win32 Legenda NomePropriedade
Imagem HTML Alt NomePropriedade

Os provedores de Automação da Interface do Usuário são responsáveis por mapear as propriedades específicas da estrutura de seus controles para as propriedades equivalentes da Automação da Interface do Usuário.

Informações sobre como implementar a automação da interface do usuário em um provedor podem ser encontradas em Provedores de automação da interface do usuário para código gerenciado. Informações sobre a implementação de padrões de controle estão disponíveis em UI Automation Control Patterns e UI Automation Text Pattern.

Automação da interface do usuário em um cliente

O objetivo de muitas ferramentas e cenários de teste automatizados é a manipulação consistente e repetível da interface do usuário. Isso pode envolver desde testes unitários de controlos específicos até à gravação e reprodução de scripts de teste que iteram através de uma série de ações genéricas num grupo de controlos.

Uma complicação que surge de aplicativos automatizados é a dificuldade de sincronizar um teste com um destino dinâmico. Por exemplo, um controle de caixa de listagem, como um contido no Gerenciador de Tarefas do Windows, que exibe uma lista de aplicativos em execução no momento. Como os itens na caixa de listagem são atualizados dinamicamente fora do controle do aplicativo de teste, tentar repetir a seleção de um item específico na caixa de listagem com qualquer consistência é impossível. Problemas semelhantes também podem surgir ao tentar repetir alterações de foco simples em uma interface do usuário que está fora do controle do aplicativo de teste.

Acesso Programático

O acesso programático fornece a capacidade de imitar, através de código, qualquer interação e experiência exposta pela entrada tradicional de mouse e teclado. A Automação da Interface do Usuário permite o acesso programático por meio de cinco componentes:

  • A árvore de automação da interface do usuário facilita a navegação pela estrutura da interface do usuário. A árvore é construída a partir da coleção de hWnd's. Para obter mais informações, consulte Visão geral da árvore de automação da interface do usuário .

  • Os elementos de automação são componentes individuais na interface do usuário. Estes podem muitas vezes ser mais granulares do que um hWnd. Para obter mais informações, consulte Tipos de Controle de Automação da Interface do Usuário - Visão Geral.

  • As propriedades de automação fornecem informações específicas sobre os elementos da interface do usuário. Para obter mais informações, consulte Visão geral das propriedades de automação da interface do usuário .

  • Os padrões de controlo definem um aspeto particular da funcionalidade de um controlo; eles podem consistir em informações de propriedade, método, evento e estrutura. Para obter mais informações, consulte a Visão Geral dos Padrões de Controlo de Automação da Interface do Utilizador .

  • Os eventos de automação fornecem notificações e informações sobre eventos. Para obter mais informações, consulte Visão geral eventos de automação da interface do usuário.

Principais propriedades para automação de teste

A capacidade de identificar exclusivamente e, posteriormente, localizar qualquer controle dentro da interface do usuário fornece a base para aplicativos de teste automatizados operarem nessa interface do usuário. Há várias propriedades de automação da interface do usuário da Microsoft usadas por clientes e provedores que ajudam nisso.

AutomationID

Identifica exclusivamente um elemento de automação de seus pares. AutomationIdProperty não é adaptado localmente, ao contrário de uma propriedade como NameProperty, que geralmente é adaptada localmente se um produto for disponibilizado em várias línguas. Consulte Usar a propriedade AutomationID.

Observação

AutomationIdProperty não garante uma identidade única em toda a árvore de automação. Por exemplo, uma aplicação pode conter um controlo de menu com várias opções de menu de nível superior que, por sua vez, têm várias opções de menu filhas. Esses itens de menu secundários podem ser identificados por um esquema genérico como "Item1, Item 2, Item3, etc.", permitindo identificadores duplicados para crianças em itens de menu de nível superior.

Tipo de controle

Identifica o tipo de controle representado por um elemento de automação. Informações significativas podem ser inferidas a partir do conhecimento do tipo de controle. Consulte Visão geral dos tipos de controle de automação da interface do usuário.

NomePropriedade

Esta é uma cadeia de caracteres de texto que identifica ou explica um controle. NameProperty deve ser usado com cautela, pois pode ser localizado. Consulte Visão geral das propriedades de automação da interface do usuário .

Implementando a automação da interface do usuário em um aplicativo de teste

Passo Descrição
Adicione as referências de automação da interface do usuário. As dll's de Automação da Interface do Usuário necessárias para clientes de Automação da Interface do Usuário estão listadas aqui.

- UIAutomationClient.dll fornece acesso às APIs do lado do cliente da UI Automation.
- UIAutomationClientSideProvider.dll fornece a capacidade de automatizar controles Win32. Consulte Suporte à automação da interface do usuário para controles padrão.
- UIAutomationTypes.dll fornece acesso aos tipos específicos definidos em UI Automation.
Adicione o namespace System.Windows.Automation. Esse namespace contém tudo o que os clientes de Automação da Interface do Usuário precisam para usar os recursos da Automação da Interface do Usuário, exceto o tratamento de texto.
Adicione o namespace System.Windows.Automation.Text. Esse namespace contém tudo o que os clientes de Automação da Interface do Usuário precisam para usar os recursos de manipulação de texto da Automação da Interface do Usuário.
Encontre controles de interesse. Os scripts de teste automatizados localizam elementos de automação da interface do usuário que representam controles de interesse na árvore de automação.

Há várias maneiras de obter elementos de automação da interface do usuário com código.

- Consulte a interface de utilizador usando uma instrução Condition. Normalmente, é aqui que a AutomationIdProperty neutra em termos de linguagem é usada. Nota: Um AutomationIdProperty pode ser obtido usando uma ferramenta como Inspect.exe que é capaz de discriminar as propriedades de automação da interface do usuário de um controle.

- Use a classe TreeWalker para percorrer toda a árvore de automação da interface do usuário ou um subconjunto dela.
- Acompanhe o foco.
- Use o hWnd do controle.
- Use a localização da tela, como a localização do cursor do mouse.

Consulte Obtendo elementos de automação da interface do usuário
Obtenha padrões de controle. Os padrões de controle expõem comportamentos comuns para controles funcionalmente semelhantes.

Depois de localizar os controles que exigem teste, os scripts de teste automatizados obtêm os padrões de controle de interesse desses elementos de automação da interface do usuário. Por exemplo, o padrão de controle InvokePattern para a funcionalidade típica do botão ou o padrão de controle WindowPattern para a funcionalidade da janela.

Consulte Visão geral dos padrões de controle de automação da interface do usuário.
Automatize a interface do usuário. Os scripts de teste automatizados agora podem controlar qualquer interface do usuário de interesse a partir de uma estrutura de interface do usuário usando as informações e a funcionalidade expostas pelos padrões de controle de automação da interface do usuário.

Há várias ferramentas e tecnologias relacionadas que suportam testes automatizados com a automação da interface do usuário.

  • Inspect.exe é um aplicativo de interface gráfica do usuário (GUI) que pode ser usado para reunir informações de automação da interface do usuário para desenvolvimento e depuração de provedores e clientes. Inspect.exe está incluído no SDK do Windows.

  • MSAABridge expõe informações de automação da interface do usuário para clientes de acessibilidade ativa. O objetivo principal de fazer a ponte entre a Automação da Interface do Usuário e a Acessibilidade Ativa é permitir que os clientes existentes de Acessibilidade Ativa interajam com qualquer estrutura que tenha implementado a Automação da Interface do Usuário.

Segurança

Para obter informações de segurança, consulte Visão geral da segurança da automação da interface do usuário .

Ver também