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
26 de junho de 2024 2.3.0 - - 2.4.0-alpha01

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.4.0-alpha01"
}

Kotlin

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

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.4

Versão 2.4.0-alpha01

26 de junho de 2024

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

Mudanças na API

  • O uso de Configurator#getKeyInjectionDelay e setKeyInjectionDelay foi descontinuado porque o parâmetro não é usado, agora que o texto é sempre injetado diretamente em vez de pressionamentos de tecla (I3bcc5).

Correções de bugs

  • O atraso entre os eventos de movimento UiObject2 foi atualizado para considerar as taxas de atualização dinâmicas (ou seja, Smooth Display) (I43f12).
  • Redução da inconsistência da inatividade do nó de acessibilidade em determinadas interfaces invalidando periodicamente o cache de acessibilidade (I3be25).
  • Correção de StaleObjectExceptions que ocorriam ao chamar toString ou hashCode em um UiObject2 desatualizado (I38ea1).
  • Melhoramos o desempenho de UiWatcher ao pular chamadas waitForIdle desnecessárias. (I8c65e).
  • Correção de imprecisões do javadoc, especialmente para esclarecer quando cada parâmetro Configurator é usado. (Ie10b1, I71631).

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, além de 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).
    • Adição de métodos By.hint para selecionar objetos pelo texto de dica (Idd345).
  • Condições personalizadas: uma interface Condition foi exposta para oferecer suporte às condições de espera personalizadas e os métodos UiDevice#wait, UiObject2#wait e UiObject2#scrollUntil correspondentes foram adicionados (27c0ea, 099d6e).
  • Correções de bugs e confiabilidade
    • Correção de um problema em que os cálculos de tamanho de tela às vezes ficavam incorretos e podiam ignorar partes da tela (Ifc016). As coordenadas e os deslocamentos usados nos testes podem precisar 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), pinças (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 baseados em porcentagem UiObject2 foram renomeados como setGestureMarginPercentage e setGestureMarginsPercentage para fins de consistência (I24435).

Correções de bugs

  • Melhoria no erro gerado quando uma tela secundária não é encontrada ou não 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).
  • Foram adicionados métodos UiDevice para receber, definir, congelar e descongelar a rotação de telas secundárias. (I912cd).

Correções de bugs

  • Foi adicionada uma nova tentativa a UiObject2#scrollUntil quando o final da rolagem não era detectado (Ibac6f).
  • Foi corrigido o problema em que UiDevice usava uma instância Instrumentation desatualizada se fosse recriada (I18cae).
  • Foi corrigido um possível NPE se o ID de exibição não pudesse ser determinado durante o despejo de nós (Icafcb).
  • Um aviso foi adicionado ao executar cliques/rolagens em objetos não clicáveis/roláveis (I4a5d9).
  • A velocidade de rolagem padrão do 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).
  • Foram adicionados UiObject2#getHint para extrair o texto de dica de um objeto e métodos By.hint para selecionar objetos de acordo com o texto de dica (Idd345).
  • By.displayId foi adicionado para oferecer suporte à seleção de objetos de acordo com a tela em que eles 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 oferecer 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).
  • O rastreamento foi adicionado a métodos com muitos recursos para identificar gargalos de desempenho (d17de3).
  • Foi adicionado um mecanismo de repetição ao iniciar uma conexão de UiAutomation (048caf).
  • Correção de um possível NPE de nós nulos em UiDevice#dumpWindowHierarchy (b725eb).
  • Correção de erros inesperados de consultas ou operações 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 no Until, e os métodos UiDevice#wait e UiObject2#wait foram atualizados para aceitar essa interface (27c0ea).
  • O UiObject2#scrollUntil foi adicionado para oferecer suporte à rolagem até que uma condição seja atendida e alcançar a paridade com UiScrollable (099d6e).
  • UiDevice#setOrientationPortrait e setOrientationLandscape foram adicionados para facilitar as rotações entre tipos de dispositivos (e13cb7).
  • UiObject2#setGestureMarginPercent foi adicionado para oferecer suporte à definição de margens relativas ao tamanho do objeto. (Ib8c77).

Correções de bugs

  • Correção de métodos UiScrollable que usavam coordenadas inválidas nos SDKs 18 a 22 (b53ece).
  • Correção da falha de UiObject2#setText e clearText ao modificar o texto nos SDKs 18 e 19 (77e41d).
  • Correção de UiWatchers que não eram executados na ordem correta (c85f92).
  • Foi corrigido um problema em que a rotação do dispositivo podia ainda não estar completa após uma mudança de orientação de UiDevice (c6cea0).
  • Melhoria na confiabilidade de cliques longos, arrastar e fazer gestos 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).