Automação de Testes Mobile com Appium: Um Guia Prático para Iniciantes

15/11/2024

Neste artigo, vou detalhar o passo a passo de como configurar e executar um teste automatizado em um aplicativo Android usando o Appium. Este processo inclui desde a instalação das ferramentas necessárias até a execução de um teste básico para clicar em um botão dentro do aplicativo.


Requisitos

Antes de começar, certifique-se de ter o seguinte instalado no seu ambiente:

  1. Appium Server (versão recente)
  2. Node.js (para executar o Appium Server)
  3. Python 3.x com appium-python-client e selenium
  4. SDK do Android (incluindo ferramentas como adb e configurado no PATH do sistema)
  5. Dispositivo Android físico ou emulador configurado
  6. Appium Inspector (para inspecionar elementos da interface)

 

Passo 1: Configurando o Ambiente

Instalação do Appium

Certifique-se de que o Appium está instalado via npm:

npm install -g appium

 

Para verificar a instalação:

 

appium –version




Instale o cliente Python do Appium

Use o pip para instalar o cliente Python do Appium:

pip install -U appium-python-client

 

Certifique-se de também ter o Selenium:

pip install selenium

 

Passo 2: Iniciando o Appium Server

Inicie o Appium Server no terminal:


 



Por padrão, o Appium rodará no endereço http://127.0.0.1:4723/wd/hub.

 

Passo 3: Configurando o Dispositivo Android

Conecte o dispositivo Android via USB e verifique se está sendo reconhecido:

adb devices




Certifique-se de que o dispositivo esteja em modo de depuração USB e habilite a instalação de apps de fontes desconhecidas, se necessário.

 

Passo 4: Obtendo os Detalhes do Aplicativo

Identifique o package name e a main activity do aplicativo que deseja testar. Para isso, use o comando:

 

adb shell dumpsys window | grep -E 'mCurrentFocus'

 

O comando:

adb shell dumpsys window | grep -E 'mCurrentFocus'



é usado para identificar qual é a atividade atualmente em foco no dispositivo Android. Ele retorna informações sobre a janela ou a atividade que está sendo exibida no momento.

Detalhamento do Comando

  1. adb shell:
    • Executa comandos diretamente no shell do dispositivo Android conectado via ADB (Android Debug Bridge).
  2. dumpsys window:
    • O dumpsys é uma ferramenta que fornece um diagnóstico do estado de diversos componentes do sistema Android. A opção window mostra informações sobre as janelas ativas no dispositivo, incluindo atividades em execução, pilhas de atividades e layouts de tela.
  3. | grep -E 'mCurrentFocus':
    • grep é um comando usado para filtrar textos em linhas específicas.
    • A opção -E permite usar expressões regulares avançadas.
    • 'mCurrentFocus' é o filtro aplicado para buscar a linha que contém informações sobre a janela ou atividade atualmente em foco.

 

Saída do Comando

Um exemplo típico de saída desse comando seria algo como:

mCurrentFocus=Window{9db8fdb u0 com.example.app/.MainActivity}

  com.example.app: Indica o package name do aplicativo em execução.

/.MainActivity: Mostra a activity atual dentro do aplicativo.

 

Uso Prático

Esse comando é útil para:

  1. Identificar o Package Name e Activity Principal de um Aplicativo:
    • Informações como o appPackage e o appActivity são necessárias para configurar automações com ferramentas como Appium.
  2. Depuração:
    • Diagnosticar qual atividade está atualmente em foco no dispositivo durante testes ou desenvolvimento.
  3. Automação de Testes:
    • Facilita o mapeamento e configuração de capacidades necessárias para testes automatizados em dispositivos Android.

 

 

No meu caso, o aplicativo usado tinha as seguintes informações:

  • Package Name: com.pally_evil_studio.NebulaPhantoms
  • Main Activity: .RunnerActivity
  •  

 

Passo 5: Inspecionando os Elementos com o Appium Inspector

  1. Abra o Appium Inspector.
  2. Configure as capacidades:
    • platformName: Android
    • platformVersion: (versão do Android no dispositivo)
    • deviceName: (nome do dispositivo ou serial do adb)
    • appPackage: com.pally_evil_studio.NebulaPhantoms
    • appActivity: .RunnerActivity
    • noReset: true
    • automationName: UiAutomator2
  3. Clique em Start Session.

Use o Appium Inspector para identificar os elementos do app. No meu caso, o botão "Play" tinha as coordenadas x:708 e y:1205.








Passo 6: Escrevendo o Script Python

Crie o script Python para interagir com o aplicativo. Abaixo está o código completo usado no meu teste:

 

Passo 7: Executando o Script

Execute o script Python:

 

python3 /caminho/para/seu/script.py

 

Se tudo estiver configurado corretamente, o Appium abrirá o aplicativo no dispositivo Android e realizará um clique no botão "Play".

 

Dicas para Depuração

  1. Certifique-se de que o Appium Server está em execução.
  2. Verifique se as capacidades (desired_capabilities) estão corretas.
  3. Use o Appium Inspector para confirmar os identificadores dos elementos.

 

Automatizar testes em aplicativos mobile com o Appium é uma tarefa essencial para quem busca eficiência e confiabilidade no processo de desenvolvimento. Com este guia, você aprendeu a configurar um ambiente completo, inspecionar elementos da interface e executar um teste básico.

Se você tiver dúvidas ou problemas durante o processo, compartilhe nos comentários!

Código python:




from appium import webdriver
from appium.options.android import UiAutomator2Options
import time

# Configurações do dispositivo e do app
options = UiAutomator2Options()
options.platform_name = "Android"
options.platform_version = "14" # Substitua pela versão do Android
options.device_name = "Galaxy S22 Ultra" # Nome do dispositivo
options.app_package = "com.pally_evil_studio.NebulaPhantoms" # Nome do pacote do app
options.app_activity = ".RunnerActivity" # Atividade principal do app
options.no_reset = True # Não reinicia o app entre execuções

# Inicializar o driver Appium
driver = webdriver.Remote(
command_executor="http://127.0.0.1:4723", # Certifique-se que o Appium Server está rodando
options=options
)

try:
# Aguarde o aplicativo abrir
time.sleep(5)

# Toque no botão "Play" com coordenadas
driver.execute_script("mobile: clickGesture", {"x": 708, "y": 1205})

print("Botão 'Play' clicado com sucesso!")

# Aguarde alguns segundos para observar o resultado
time.sleep(5)

finally:
# Feche a sessão
driver.quit()

Repositório no GitHub:https://github.com/josedarci/appium-python-tutorial