IU Automator

UI Automator é um framework de testes de IU recomendado para testes funcionais de IU entre apps instalados e do sistema.

O framework de testes do UI Automator oferece um conjunto de APIs para criar testes de IU que realizam interações em apps de usuário e do sistema. As APIs do UI Automator permitem realizar operações como abrir o menu de configurações ou o Acesso rápido aos apps em um dispositivo de teste. O framework de testes do UI Automator é adequado para programar testes automatizados no estilo caixa preta, em que o código do teste não se baseia em detalhes internos de implementação do app de destino.

Os principais recursos do framework de testes do UI Automator incluem:

Visualizador do UI Automator

A ferramenta uiautomatorviewer oferece uma GUI conveniente para verificar e analisar os componentes de IU exibidos no momento em um dispositivo Android. Você pode usar essa ferramenta para inspecionar a hierarquia de layouts e ver as propriedades de componentes de IU visíveis no primeiro plano do dispositivo. Essas informações permitem criar testes mais detalhados por meio do UI Automator. Por exemplo, é possível criar um seletor de IU correspondente a uma propriedade visível específica.

A ferramenta uiautomatorviewer é encontrada no diretório <android-sdk>/tools/bin.

Como acessar o estado do dispositivo

O framework de testes UI Automator oferece uma classe UiDevice para acessar e realizar operações no dispositivo em que o app de destino está sendo executado. Você pode chamar os métodos dessa classe para acessar propriedades do dispositivo, como orientação atual ou tamanho da tela. A classe UiDevice também permite realizar ações como:

  • Mudar a rotação do dispositivo.
  • Pressionar uma tecla de hardware, como "Aumentar volume".
  • Pressionar os botões "Voltar", "Início" ou "Menu".
  • Abrir a aba de notificações.
  • Fazer uma captura de tela da janela atual.

Por exemplo, para simular o pressionamento do botão "Início", chame o método UiDevice.pressHome().

APIs do UI Automator

As APIs do UI Automator permitem programar testes robustos sem conhecer os detalhes de implementação do app de destino. Você pode usar essas APIs para capturar e manipular componentes da IU em vários apps:

  • UiCollection: enumera os elementos de IU de um contêiner com a finalidade de contar ou segmentar subelementos de acordo com o texto visível ou com a propriedade de descrição de conteúdo.
  • UiObject: representa um elemento de IU visível no dispositivo.
  • UiScrollable: oferece compatibilidade com a pesquisa de itens em um contêiner de IU rolável.
  • UiSelector: representa uma consulta para um ou mais elementos de IU de destino em um dispositivo.
  • Configurator: permite definir parâmetros importantes para executar testes do UI Automator.

Por exemplo, o código a seguir mostra como programar um script de teste que exibe o Acesso rápido aos apps padrão no dispositivo:

Kotlin

    device = UiDevice.getInstance(getInstrumentation())
    device.pressHome()

    // Bring up the default launcher by searching for a UI component
    // that matches the content description for the launcher button.
    val allAppsButton: UIObject = device.findObject(
            UiSelector().description("Apps"))

    // Perform a click on the button to load the launcher.
    allAppsButton.clickAndWaitForNewWindow()
    

Java

    device = UiDevice.getInstance(getInstrumentation());
    device.pressHome();

    // Bring up the default launcher by searching for a UI component
    // that matches the content description for the launcher button.
    UiObject allAppsButton = device
            .findObject(new UiSelector().description("Apps"));

    // Perform a click on the button to load the launcher.
    allAppsButton.clickAndWaitForNewWindow();
    

Para saber mais sobre o uso do UI Automator, consulte a Referência da API e o guia Testar a IU de vários apps.

Outros recursos

Para mais informações sobre o uso do UI Automator em testes do Android, consulte os recursos a seguir.

Exemplos

  • BasicSample (em inglês): exemplo básica do UI Automator.