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

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.

Essa 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 automatizados.

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 (IU) exponham funcionalidades complexas e avançadas de maneira acessível e facilmente automatizada.

A Automação da interface do usuário foi desenvolvida como sucessora da Acessibilidade Ativa da Microsoft. A Acessibilidade Ativa é 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 teste em mente, embora tenha evoluído para essa função devido aos requisitos muito semelhantes de acessibilidade e automação. Além de fornecer soluções mais refinadas para acessibilidade, a Automação da interface do usuário 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 pelos produtos AT; a Automação da interface do usuário separa os dois modelos.

Um provedor e um cliente são necessários para implementar a Automação da interface do usuário para que ela seja útil como uma ferramenta de teste automatizada. Os provedores da Automação da interface do usuário são aplicativos como o Microsoft Word, o Excel e outros aplicativos ou controles de terceiros com base no sistema operacional Microsoft Windows. Os clientes da Automação da interface do usuário incluem scripts de teste automatizados e aplicativos de tecnologia adaptativa.

Observação

A intenção desta visão geral é mostrar os novos e aprimorados recursos de teste automatizado de Automação da interface do usuário. Essa visão geral não se destina a fornecer informações sobre recursos de acessibilidade e não abordará a acessibilidade além de quando for 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 de interface do usuário usando a interação padrão de teclado e mouse.

Após a identificação dessas ações principais, 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 de 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) geralmente envolve a expansão e o recolhimento da 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 individuais, menus ou outros controles. Infelizmente, cada tipo de controle vem em dezenas de pequenas variações. Em outras palavras, embora dez variações de um botão de push possam funcionar da mesma maneira e executar a mesma função, todas elas devem ser tratadas como controles exclusivos. Não há como saber que esses controles são funcionalmente equivalentes. Padrões de controle foram desenvolvidos para representar esses comportamentos comuns de controle. Para saber mais, confira Visão geral dos padrões de controle da Automação da interface do usuário.

Implementação da Automação da interface de usuário

Como mencionado anteriormente, sem o modelo unificado fornecido pelo 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 em 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 da Automação da interface do usuário equivalente.

Tipo de controle da Automação da interface do usuário Estrutura da IU Propriedade específica da estrutura Propriedade de Automação da interface do usuário
Botão Windows Presentation Foundation Conteúdo NameProperty
Botão Win32 Legenda NameProperty
Image HTML alt NameProperty

Os provedores da Automação da interface do usuário são responsáveis por mapear as propriedades específicas à 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. As informações sobre como implementar padrões de controle estão disponíveis em Padrões de controle de Automação da interface do usuário e Padrões de texto da Automação da interface do usuário.

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

O objetivo de muitas ferramentas e cenários de teste automatizado é a manipulação consistente e repetível da interface do usuário. Isso pode envolver controles específicos de teste de unidade até a gravação e a reprodução de scripts de teste que iteram por meio de uma série de ações genéricas em um grupo de controles.

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, por meio do código, qualquer interação e experiência expostas pela entrada tradicional de mouse e teclado. A Automação da interface do usuário habilita o acesso programático por meio de cinco componentes:

Propriedades importantes para automação de teste

A capacidade de identificar e localizar, posteriormente, qualquer controle na interface do usuário fornece a base para que os aplicativos de teste automatizados operem nessa interface do usuário. Há várias propriedades da 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 irmãos. AutomationIdProperty não é localizado, ao contrário de uma propriedade como NameProperty, que normalmente é localizada se um produto for enviado em vários idiomas. Confira Usar a propriedade AutomationID.

Observação

AutomationIdProperty não garante uma identidade exclusiva em toda a árvore de automação. Por exemplo, um aplicativo pode conter um controle de menu com vários itens de menu de nível superior que, por sua vez, têm vários itens de menu filho. Esses itens de menu secundários podem ser identificados por um esquema genérico como "Item1, Item 2, item 3 etc.", permitindo identificadores duplicados para crianças em itens de menu de nível superior.

ControlType

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. Confira Visão geral dos tipos de controle de Automação da interface do usuário.

NameProperty

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

Implementação da Automação da interface do usuário em um aplicativo de teste

Etapa Descrição
Adicionar as referências da Automação da interface do usuário. As dlls da Automação da interface do usuário são necessárias os clientes de Automação da interface do usuário clientes listados aqui.

– UIAutomationClient.dll fornece acesso às APIs do lado do cliente da Automação da interface do usuário.
– UIAutomationClientSideProvider.dll fornece a capacidade de automatizar controles Win32. Confira Suporte à Automação da interface do usuário para controles padrão.
– UIAutomationTypes.dll fornece acesso aos tipos específicos definidos na Automação da interface do usuário.
Adicionar o namespace System.Windows.Automation. Esse namespace contém tudo de que os clientes da 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.
Adicionar o namespace System.Windows.Automation.Text. Esse namespace contém tudo de que os clientes da Automação da interface do usuário precisam para usar os recursos de tratamento de texto da Automação da interface do usuário.
Encontrar controles de interesse. Scripts de teste automatizados localizam os elementos da Automação da interface do usuário que representam controles de interesse dentro da árvore de automação.

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

– Consultar a interface do usuário usando uma instrução Condition. Normalmente, é aí que o AutomationIdProperty de idioma neutro é usado. Nota: um AutomationIdProperty pode ser obtido usando uma ferramenta como Inspect.exe, que é capaz de itemizar as propriedades da Automação da interface do usuário de um controle.

– Usar a classe TreeWalker para percorrer toda a árvore da Automação da interface do usuário ou um subconjunto dela.
– Acompanhar o foco.
– Usar o hWnd do controle.
– Usar o local da tela, como o local do cursor do mouse.

Confira Obtenção de elementos da Automação da interface do usuário
Obter padrões de controle. Os padrões de controle expõem comportamentos comuns para controles funcionalmente semelhantes.

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

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

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

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

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

Segurança

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

Confira também