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
13 de agosto de 2025 2.3.0 - - 2.4.0-alpha06

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-alpha06"
}

Kotlin

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

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.

Test Uiautomator Shell: versão 1.0

Versão 1.0.0-alpha02

13 de agosto de 2025

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

Versão 1.0.0-alpha01

18 de junho de 2025

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

Novos recursos

  • Primeira versão Alfa da biblioteca de shell ui-automator para executar comandos de shell como usuário de shell. Essa biblioteca permite ler stdout, stderr e gravar no stdin de um processo sh iniciado pelo shell. De fato, ele faz backport de UiAutomation#executeShellCommandRwe introduzido na API 34.

Versão 2.4

Versão 2.4.0-alpha06

13 de agosto de 2025

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

Novos recursos

  • Adição de APIs baseadas em janelas para melhorar os testes de várias janelas. Por exemplo, UiDevice#findWindow agora pode ser usado para encontrar um UiWindow específico de acordo com um ByWindowSelector criado com métodos de fábrica By.Window. (I359c4, I40528, I8c963)

Versão 2.4.0-alpha05

18 de junho de 2025

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

Mudanças na API

  • Adição de UiObject2#waitForStable como atalho para UiObject2#accessibilityNodeInfo#waitForStable().

Versão 2.4.0-alpha04

4 de junho de 2025

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

Mudanças na API

  • onView foi renomeado como onElement para esclarecer que funciona com o Compose (I53a3b, b/419006806).

Correções de bugs

Versão 2.4.0-alpha03

20 de maio de 2025

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

Correções de bugs

  • Correção de waitForStableInActiveWindow que gerava NPE em alguns casos (Ibf50f, b/417046391).

Versão 2.4.0-alpha02

7 de maio de 2025

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

Novos recursos

  • Formato inicial da nova API Uiautomator. UiAutomatorTestScope pode ser criado usando a fábrica uiAutomator, que dá acesso às novas APIs onView.
  • Regras iniciais do Lint para avisar sobre o uso de AccessibilityNodeInfo#getText e sugerir o uso de textAsString.

Mudanças na API

  • Adicionamos Configurator#setDefaultDisplayId para definir um ID de exibição e restringir todas as pesquisas a ele (Icdf17).
  • Mudança de Searchable (interface compartilhada por UiDevice e UiObject2) para pública por conveniência (I67f18).

Correções de bugs

  • Foi corrigido o processamento de teclas meta em UiDevice#pressKeyCodes. (I73f80).
  • UiDevice#getWindowRoots foi atualizado para sempre retornar raízes na ordem Z (I87426).
  • Foi corrigido um problema em que alguns gestos estavam incompletos (I60dd3, If4edd).
  • Correção de um loop infinito raro ao chamar UiDevice#scrollUntil (I39989).

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

  • Descontinuamos Configurator#getKeyInjectionDelay e setKeyInjectionDelay porque o parâmetro não é mais usado. Agora, o texto é sempre injetado diretamente, em vez de pressionamentos de tecla. (I3bcc5).

Correções de bugs

  • Atualizamos o atraso entre eventos de movimento UiObject2 para considerar taxas de atualização dinâmicas (por exemplo, Tela Suave) (I43f12).
  • Redução da instabilidade devido à obsolescência 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).
  • Melhoria na performance do UiWatcher ao ignorar chamadas waitForIdle desnecessárias. (I8c65e).
  • Correção de imprecisões no Javadoc, principalmente 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).
    • Adicionamos By.hasParent e By.hasAncestor para selecionar objetos de acordo com os elementos principais (I93c36).
    • Adicionamos métodos By.hint para selecionar objetos pelo texto de dica (Idd345).
  • Condições personalizadas: foi exposta uma interface Condition para oferecer suporte a condições de espera personalizadas, e foram adicionados os métodos UiDevice#wait, UiObject2#wait e UiObject2#scrollUntil correspondentes (27c0ea, 099d6e).
  • Correções de bugs e confiabilidade
    • Foi corrigido um problema em que os cálculos de tamanho da tela, algumas vezes, eram incorretos e podiam ignorar partes da tela (Ifc016). As coordenadas e os deslocamentos usados nos testes podem precisar ser ajustados.
    • Atualizamos a injeção de MotionEvent para melhorar a precisão (678ca3) e emular melhor os gestos do usuário (454450).
    • Melhorias na confiabilidade de rolagem (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 manter a consistência (I24435).

Correções de bugs

  • Melhoramos o 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 de ordem de desenho (z-index). (I5dfa4).
  • Adicionados métodos UiDevice para receber, definir, congelar e descongelar a rotação de telas secundárias. (I912cd).

Correções de bugs

  • Adicionada nova tentativa a UiObject2#scrollUntil quando não foi possível detectar o fim da rolagem (Ibac6f).
  • Correção do problema em que UiDevice usava uma instância Instrumentation desatualizada se ela fosse recriada (I18cae).
  • Correção de um possível NPE se o ID da tela não puder ser determinado ao despejar nós (Icafcb).
  • Adicionamos um aviso ao realizar cliques/rolagens em objetos que não podem ser clicados/rolados (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

  • Adicionamos By.hasParent e By.hasAncestor para permitir a localização de objetos de acordo com os elementos pai (I93c36).
  • Adicionamos UiObject2#getHint para recuperar o texto de dica de um objeto e métodos By.hint para selecionar objetos de acordo com o texto de dica (Idd345).
  • Adição de By.displayId para oferecer suporte à seleção de objetos de acordo com a tela em que eles estão (I1825b).
  • Adicionamos os métodos UiDevice#getDisplayHeight(int) e UiDevice#getDisplayWidth(int) 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).
  • Mudança de UiDevice#executeShellCommand para público, mas desaconselhado em vez de oculto (Ic48a1).

Correções de bugs

  • A injeção de MotionEvent foi atualizada para reduzir a instabilidade, priorizando a precisão do gesto em vez da velocidade (678ca3).
  • Adição de rastreamento a métodos com uso intenso de recursos para identificar gargalos de desempenho (d17de3).
  • Adição de um mecanismo de nova tentativa ao iniciar uma conexão UiAutomation (048caf).
  • Correção de uma 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

  • Foi exposta uma interface Condition para permitir condições de espera personalizadas em vez de depender apenas dos recursos integrados em Until. Além disso, 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 para alcançar a paridade com UiScrollable (099d6e).
  • Adição de UiDevice#setOrientationPortrait e setOrientationLandscape para facilitar as rotações em diferentes tipos de dispositivos (e13cb7).
  • Adição de UiObject2#setGestureMarginPercent para oferecer suporte à definição de margens relativas ao tamanho do objeto. (Ib8c77).

Correções de bugs

  • Correção dos métodos UiScrollable que ocasionalmente usavam coordenadas inválidas nos SDKs 18 a 22 (b53ece).
  • Correção da falha de UiObject2#setText e clearText ao modificar 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 não ser concluída após uma mudança de orientação UiDevice (c6cea0).
  • Melhoria da confiabilidade de cliques longos, arrastar e pinçar (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).