Teste Uiautomator

  
Framework para testes funcionais da interface entre apps.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
21 de fevereiro de 2024 2.3.0 - - -

Declarar dependências

Para adicionar uma dependência ao teste, é preciso adicionar o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para mais informações.

Adicione as dependências dos artefatos necessários ao arquivo build.gradle do seu app ou módulo:

Groovy

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.3.0"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.3.0")
}

Para mais informações sobre dependências, consulte Adicionar dependências de build.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 2.3.0

Versão 2.3.0

21 de fevereiro de 2024

Lançamento de androidx.test.uiautomator:uiautomator:2.3.0. A versão 2.3.0 contém estas confirmações.

Mudanças importantes desde a versão 2.2.0

  • Suporte a várias telas: foi adicionado suporte para encontrar e operar objetos em várias telas e métodos UiDevice para gerenciar telas secundárias (Ie6544, I912cd).
  • Novos seletores:
    • Adição de By.displayId para selecionar objetos pelo ID de exibição (I1825b).
    • By.hasParent e By.hasAncestor foram adicionados para selecionar objetos de acordo com os pais (I93c36).
    • Métodos By.hint foram adicionados para selecionar objetos pelo texto de dica (Idd345).
  • Condições personalizadas: Exposição de uma interface Condition para oferecer suporte a condições de espera personalizadas e adição dos métodos UiDevice#wait, UiObject2#wait e UiObject2#scrollUntil correspondentes (27c0ea, 099d6e).
  • Correções de bugs e confiabilidade
    • Correção de um problema em que os cálculos de tamanho de tela ficavam incorretos e podiam ignorar partes da tela (Ifc016). As coordenadas e os deslocamentos usados nos testes talvez precisem ser ajustados.
    • A injeção de MotionEvent foi atualizada para melhorar a precisão (678ca3) e emular melhor os gestos do usuário (454450).
    • Melhoria na confiabilidade de rolagens (I7b059), rotações (c6cea0), cliques longos (49572b), gestos de pinça (3c619a) e muito mais.

Versão 2.3.0-rc01

7 de fevereiro de 2024

Lançamento de androidx.test.uiautomator:uiautomator:2.3.0-rc01 sem mudanças. A versão 2.3.0-rc01 contém estas confirmações.

Versão 2.3.0-beta01

13 de dezembro de 2023

Lançamento de androidx.test.uiautomator:uiautomator:2.3.0-beta01. A versão 2.3.0-beta01 contém estas confirmações.

Mudanças na API

  • Os métodos de margem UiObject2 com base em porcentagem foram renomeados como setGestureMarginPercentage e setGestureMarginsPercentage para consistência (I24435).

Correções de bugs

  • Melhoria no erro gerado quando uma tela secundária não é encontrada ou não está acessível (116b23).

Versão 2.3.0-alpha05

1º de novembro de 2023

Lançamento de androidx.test.uiautomator:uiautomator:2.3.0-alpha05. A versão 2.3.0-alpha05 contém estas confirmações.

Mudanças na API

  • Adição de UiObject2#getDrawingOrder para expor informações da ordem de exibição (Z-index). (I5dfa4).
  • Adição de métodos UiDevice para receber, definir, congelar e descongelar a rotação de telas secundárias (I912cd).

Correções de bugs

  • Uma nova tentativa foi adicionada a UiObject2#scrollUntil quando o fim da rolagem não pôde ser detectado (Ibac6f).
  • Foi corrigido um problema em que o UiDevice usava uma instância Instrumentation desatualizada se fosse recriada (I18cae).
  • Foi corrigida uma possível NPE quando o ID de exibição não podia ser determinado ao despejar nós (Icafcb).
  • Um aviso foi adicionado ao realizar cliques/rolagens em objetos não clicáveis/roláveis (I4a5d9).
  • A velocidade de rolagem padrão de UiObject2 foi reduzida para melhorar a confiabilidade (I5e071).

Versão 2.3.0-alpha04

26 de julho de 2023

Lançamento de androidx.test.uiautomator:uiautomator:2.3.0-alpha04. A versão 2.3.0-alpha04 contém estas confirmações.

Mudanças na API

  • By.hasParent e By.hasAncestor foram adicionados para oferecer suporte à localização de objetos de acordo com os pais (I93c36).
  • UiObject2#getHint foi adicionado para extrair o texto de dica de um objeto, e métodos By.hint para selecionar objetos de acordo com o texto de dica deles (Idd345).
  • Adição de By.displayId para oferecer suporte à seleção de objetos de acordo com a tela em que estão (I1825b).
  • Os métodos UiDevice#getDisplayHeight(int) e UiDevice#getDisplayWidth(int) foram adicionados para encontrar as dimensões de uma tela pelo ID (Ie6544).
  • Os métodos wait(SearchCondition, long) e wait(UiObject2Condition, long) foram adicionados novamente para compatibilidade com versões anteriores (Iebfda).
  • O UiDevice#executeShellCommand foi mudado para público, mas não recomendado, em vez de oculto (Ic48a1).

Correções de bugs

  • A injeção de MotionEvent foi atualizada para reduzir a inconsistência, priorizando a precisão dos gestos em vez da velocidade (678ca3).
  • Adição de rastreamento a métodos com muitos recursos para identificar gargalos de desempenho (d17de3).
  • Foi adicionado um mecanismo de repetição ao iniciar uma conexão com UiAutomation (048caf).
  • Correção de um possível NPE de nós nulos em UiDevice#dumpWindowHierarchy (b725eb).
  • Correção de erros inesperados ao consultar ou operar em telas particulares (985db6, 7053d4).

Versão 2.3.0-alpha03

19 de abril de 2023

Lançamento de androidx.test.uiautomator:uiautomator:2.3.0-alpha03. A versão 2.3.0-alpha03 contém estas confirmações.

Mudanças na API

  • Uma interface Condition foi exposta para permitir condições de espera personalizadas, em vez de depender apenas dos integrados em Until, e os métodos UiDevice#wait e UiObject2#wait foram atualizados para aceitar essa interface (27c0ea).
  • Adição de UiObject2#scrollUntil para oferecer suporte à rolagem até que uma condição seja atendida e alcançar paridade com UiScrollable (099d6e).
  • UiDevice#setOrientationPortrait e setOrientationLandscape foram adicionados para facilitar rotações entre tipos de dispositivos (e13cb7).
  • Adição de UiObject2#setGestureMarginPercent para oferecer suporte à configuração de margens relativas ao tamanho do objeto (Ib8c77).

Correções de bugs

  • Correção de métodos UiScrollable ocasionalmente usando coordenadas inválidas nos SDKs 18 a 22 (b53ece).
  • Correção de UiObject2#setText e clearText que falhavam ao modificar o texto nos SDKs 18 e 19 (77e41d).
  • Correção de UiWatchers que não eram executados na ordem correta (c85f92).
  • Correção do problema em que a rotação do dispositivo ainda não estava completa após uma mudança de orientação de UiDevice (c6cea0).
  • Melhoria na confiabilidade de cliques longos, ações de arrastar e fazer gesto de pinça (49572b, 3c619a).

Versão 2.3.0-alpha02

11 de janeiro de 2023

Lançamento de androidx.test.uiautomator:uiautomator:2.3.0-alpha02. A versão 2.3.0-alpha02 contém estas confirmações.

Mudanças na API

  • A geração de registros foi reformulada em toda a biblioteca para fornecer mais informações, avisar sobre possíveis problemas e melhorar a consistência.
  • A UiDevice#pressKeyCodes foi adicionada para permitir o pressionamento de várias teclas simultaneamente, por exemplo, pressionando POWER e VOLUME_DOWN para fazer uma captura de tela (22e525).
  • A UiDevice#setCompressedLayoutHierarchy foi adicionada e a UiDevice#setCompressedLayoutHeirarchy foi descontinuada para corrigir um erro de digitação no nome do método (4e2f65).
  • A UiAutomatorInstrumentationTestRunner foi marcada como descontinuada por lidar com UiAutomatorTestCases descontinuadas e não ser mais necessária (be6c85).
  • Atualizamos o atraso entre MotionEvents de UiObject2 para o dobro da taxa de atualização da tela com o objetivo de emular melhor os gestos do usuário (454450).
  • Adição de suporte para texto com várias linhas e correspondência de descrição (1625e6, b/255787130).

Correções de bugs

  • Correção de StaleObjectExceptions que às vezes eram geradas ao consultar ou aguardar objetos (4cbcc0).
  • Correção dos valores de retorno de UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning e flingToEnd que não indicam se o início/fim foi alcançado (d33e06).
  • Correção dos métodos UiScrollable#scrollForward e scrollBackward, ignorando o tempo limite configurado (29e4f3).
  • Correção do construtor de cópia BySelector, que não processava seletores de profundidade (6c7b91).
  • Correção do processamento de valores percentuais inválidos em UiObject#pinchIn e pinchOut (01b973).
  • Correção de um problema raro em que o suporte a várias janelas era perdido se a conexão da UiAutomation fosse redefinida (1bb956).

Versão 2.3.0-alpha01

7 de setembro de 2022

Lançamento de androidx.test.uiautomator:uiautomator:2.3.0-alpha01. A versão 2.3.0-alpha01 contém estas confirmações.

Mudanças na API

  • Anotação de nulidade para todos os métodos públicos.
  • A injeção de MotionEvent agora é assíncrona com um pequeno atraso para gestos UiObject2 mais suaves.
  • O intervalo de pesquisa durante a espera foi reduzido de 1.000 ms para 100 ms.
  • UiDevice#wakeUp e UiDevice#sleep foram atualizados para usar KEYCODE_WAKEUP e KEYCODE_SLEEP para oferecer suporte a dispositivos que substituem o botão liga/desliga.
  • Foram adicionados o elemento UiObject2#getDisplayId e suporte para encontrar e gerenciar objetos em várias telas.
  • Os métodos UiObject#click e UiObject2#clickAndWait foram adicionados para clicar em um ponto usando as coordenadas dele.

Correções de bugs

  • Foi corrigido um problema em que os cálculos de tamanho da tela, algumas vezes, eram incorretos e podiam ignorar partes da tela, especialmente no modo de várias janelas (Ifc016c).
  • Foi corrigido o dimensionamento de capturas de tela em UiDevice#takeScreenshot (Id80ad6).
  • Melhorias na confiabilidade de Until.scrollFinished e UiObject2#scroll (I7b0595).
  • Os avisos de IncorrectContextUseViolation no modo estrito foram corrigidos (Iffa6a0).