Usando automação de interface do usuário para testes automatizados
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.
Automação da Interface do Usuário fornece um modelo de objeto unificado que permite que todas as estruturas de interface do usuário exponham funcionalidades complexas e avançadas de maneira acessível e facilmente automatizada.
Automação da Interface do Usuário foi desenvolvido como um sucessor do Microsoft Active Accessibility, uma estrutura projetada para fornecer uma solução para tornar os controles e aplicativos acessíveis. A Acessibilidade Ativa da Microsoft não foi projetada com a automação de teste em mente, embora tenha evoluído para essa função devido aos requisitos semelhantes de acessibilidade e automação. Automação da Interface do Usuário foi projetado especificamente para fornecer funcionalidade robusta para testes automatizados, além de fornecer soluções mais refinadas para acessibilidade. Por exemplo, a Acessibilidade Ativa da Microsoft depende de uma única interface para expor informações sobre a interface do usuário e coletar as informações necessárias para produtos de tecnologia adaptativa; Automação da Interface do Usuário separa os dois modelos.
Um provedor e um cliente são necessários para implementar Automação da Interface do Usuário para que ele seja útil como uma ferramenta de teste automatizada. Automação da Interface do Usuário provedores são aplicativos, como Microsoft Word, Microsoft Excel e outros aplicativos ou controles de terceiros com base no sistema operacional Windows. Os clientes da Automação da interface do usuário incluem scripts de teste automatizados e aplicativos de tecnologia adaptativa.
Este tópico inclui as seções a seguir.
- Automação da Interface do Usuário em provedores
- Automação da Interface do Usuário em clientes
- Propriedades importantes para automação de teste
- Ferramentas e tecnologias relacionadas
- Tópicos relacionados
Automação da Interface do Usuário em provedores
Para automatizar um elemento da interface do usuário, o desenvolvedor deve examinar quais ações um usuário final pode executar no objeto de interface do usuário usando o teclado padrão e a interação do mouse. Depois que essas ações principais forem identificadas, os padrões de controle Automação da Interface do Usuário que espelho 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 normalmente envolve expandir e recolher a caixa de combinação para exibir ou ocultar uma lista de itens, selecionar um item na lista ou adicionar um novo valor por meio da entrada do teclado.
Com outros modelos de acessibilidade, os desenvolvedores devem coletar informações diretamente de botões individuais, menus ou outros controles. Cada tipo de controle vem em dezenas de pequenas variações. Em outras palavras, embora 10 variações de um botão de push funcionem da mesma maneira e executem a mesma função, todas elas devem ser tratadas como controles exclusivos. Não há como saber que esses controles são funcionalmente equivalentes. Automação da Interface do Usuário 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.
Sem o modelo unificado de padrões de controle fornecido por Automação da Interface do Usuário, as ferramentas de teste e os desenvolvedores devem ter informações específicas da estrutura para expor propriedades e comportamentos de controle nessa estrutura. Como várias estruturas de interface do usuário diferentes podem estar presentes ao mesmo tempo em sistemas operacionais Windows, incluindo Microsoft 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 lista os nomes de propriedade específicos da estrutura necessários para recuperar o nome ou o texto associado a um controle de botão e mostra a propriedade equivalente Automação da Interface do Usuário.
Tipo de controle | Estrutura da interface do usuário | Propriedade específica da estrutura | Propriedade da Automação da Interface do Usuário |
---|---|---|---|
Botão | WPF | Conteúdo | Propriedade Name |
Botão | Win32 | Legenda | Propriedade Name |
Image | HTML | alt | Propriedade Name |
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. Para obter informações sobre como implementar Automação da Interface do Usuário em um provedor, consulte Automação da Interface do Usuário Guia do Programador do Provedor. Para obter informações sobre como implementar padrões de controle, consulte Implementando padrões de controle de Automação da Interface do Usuário.
Automação da Interface do Usuário em clientes
A meta de ferramentas e cenários de teste automatizados é a manipulação consistente e repetível da interface do usuário. Por exemplo, isso pode envolver controles específicos de teste de unidade e gravação e execuçã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 em aplicativos automatizados é a dificuldade de sincronizar um teste com um destino dinâmico, por exemplo, um controle de caixa de listagem, como o 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, é impossível repetir a seleção de um item específico na caixa de listagem com qualquer consistência. Problemas semelhantes 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:
- A árvore de Automação da interface do usuário facilita a navegação por meio da estrutura da interface do usuário. A árvore é criada a partir da coleção de HWNDs. Para obter mais informações, consulte Visão geral da árvore Automação da Interface do Usuário.
- Os elementos de automação são componentes individuais na interface do usuário. Geralmente, eles podem ser mais granulares do que um HWND.
- As propriedades de automação fornecem informações específicas sobre elementos da interface do usuário. Para saber mais, confira Visão geral das propriedades de Automação da interface do usuário.
- Os padrões de controle definem um aspecto específico da funcionalidade de um controle; eles podem consistir em informações de propriedade, método, evento e estrutura. Para saber mais, confira Visão geral dos padrões de controle da Automação da interface do usuário.
- Os eventos de automação fornecem notificações e informações de eventos. Para saber mais, confira Visão geral de eventos de Automação da Interface do Usuário.
Propriedades importantes para automação de teste
A capacidade de identificar e localizar subsequentemente qualquer controle na interface do usuário fornece a base para que aplicativos de teste automatizados operem nessa interface do usuário. Automação da Interface do Usuário propriedades usadas por clientes e provedores para identificar e localizar controles são descritas na tabela a seguir.
Propriedade | Descrição |
---|---|
AutomationId | Distingue exclusivamente um elemento de automação de seus irmãos. O suporte para a propriedade AutomationId não é necessário. Quando está disponível, a propriedade AutomationId de um elemento é a mesma em qualquer instância do aplicativo, independentemente do idioma local. Embora a propriedade AutomationId seja exclusiva entre os elementos irmãos, ela pode não ser exclusiva em toda a área de trabalho. Por exemplo, várias instâncias de um aplicativo ou várias exibições de pasta no Microsoft Windows Explorer, podem conter elementos com a mesma AutomationIdProperty, como "SystemMenuBar". Os clientes não devem fazer suposições sobre as AutomationIds expostas por outros aplicativos. Não há garantia de que AutomationId seja estável em diferentes versões ou builds de um aplicativo. |
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. Para saber mais, confira Visão geral dos tipos de controle da Automação da interface do usuário. |
Nome | Uma cadeia de caracteres de texto que identifica ou explica a finalidade de um elemento de automação. Ele deve ser usado com cuidado porque pode ser localizado. A propriedade Name não é um identificador exclusivo entre irmãos. Para automação de teste, os clientes devem usar a propriedade AutomationId ou a propriedade RuntimeId. |
Runtimeid | Uma matriz de inteiros que representam um identificador para um elemento de automação. O identificador é exclusivo na área de trabalho, mas é garantido ser exclusivo apenas para a interface do usuário da área de trabalho na qual foi gerado. Os identificadores podem ser reutilizados ao longo do tempo. Use IUIAutomation::CompareElements para determinar se o elemento que atualmente tem uma ID de runtime específica é o mesmo elemento que anteriormente tinha essa ID. Além disso, o formato da propriedade RuntimeId pode ser alterado. Ele deve ser tratado como um valor opaco e usado apenas para comparação; por exemplo, para determinar se um elemento de automação está no cache. |
Ferramentas e tecnologias relacionadas
Inspecionar (Inspect.exe) é uma ferramenta baseada no Windows que você pode usar para coletar Automação da Interface do Usuário informações para desenvolvimento e depuração de provedores e clientes. A inspeção está incluída no SDK (Software Development Kit) do Windows.
Tópicos relacionados