Pré-requisitos de ambiente
Antes de executar testes automatizados com Appium em dispositivos Android, é preciso preparar o seguinte conjunto de ferramentas:
- Node.js e npm
- JDK (Java Development Kit)
- Android SDK
- Dispositivo físico ou emulador Android
- Servidor Appium
- Cliente Python para Appium
Node.js e npm
O Appium depende do runtime Node.js. Instale a versão LTS recomendada e confirme a instalação com:
node -v
npm -v
JDK
O ecossistema Android exige a presença do Java. Instale o JDK e, em seguida, configure as variáveis de ambiente. No Linux ou macOS, adicione ao arquivo de perfil:
export JAVA_HOME=/caminho/para/jdk
export PATH=$JAVA_HOME/bin:$PATH
Valide com:
java -version
javac -version
Android SDK
Baixe o pacote de ferramentas de linha de comando do Android SDK. Após extrair, defina a variável ANDROID_HOME apontando para o diretório do SDK. Inclua as pastas necessárias no PATH:
export ANDROID_HOME=/caminho/para/android-sdk
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/tools:$PATH
export PATH=$ANDROID_HOME/tools/bin:$PATH
export PATH=$ANDROID_HOME/emulator:$PATH
Utilize o sdkmanager para instalar as plataformas e ferramentas de build desejadas.
Dispositivo Android
Conecte um aparelho real via USB com depuração ativada, ou crie um emulador pelo Android Virtual Device Manager. Para listar os dispositivos reconhecidos:
adb devices -l
Instalação do Appium
A forma mais simples de iniciar é pelo Appium Desktop, que inclui o servidor e uma interface gráfica. Também é possível instalar globalmente via npm:
npm install -g appium
Cliente Python
Para controlar sessões Appium com Python, instale o pacote oficial:
pip install Appium-Python-Client
Obter appPackage e appActivity
Para iniciar uma sessão de automação, você precisa do nome do pacote e da atividade principle do aplicativo. Siga os passos:
- Abra o aplicativo no dispositivo.
- Capture os logs do Android em um arquivo:
adb logcat -v threadtime > log_app.txt
- Interaja com o aplicativo por alguns segundos.
- Interrompa a captura com Ctrl+C.
- Procque no arquivo gerado pela palavra
Displayed.
Se houver mais de um dispositivo conectado, especifique o alvo com o serial:
adb -s <serial_dispositivo> logcat -v threadtime > log_app.txt
A linha encontrada terá formato semelhante a:
Displayed com.exemplo.app/.MainActivity: +1s234ms
Para o caso do Toutiao, o pacote é com.ss.android.article.news.
Tabela de referência de pacotes e URL Schemes
Segue uma seleção de aplicativos populares e seus respectivos identificadores:
| Aplicativo | Package (Android) | URL Scheme (iOS) |
|---|---|---|
| Toutiao | com.ss.android.article.news | snssdk141:// |
| com.tencent.mm | weixin:// | |
| com.tencent.mobileqq | mqq:// | |
| Taobao | com.taobao.taobao | taobao:// |
| Alipay | com.eg.android.AlipayGphone | alipay:// |
| JD | com.jingdong.app.mall | openApp.jdMobile:// |
| Baidu | com.baidu.searchbox | baiduboxapp:// |
| com.sina.weibo | sinaweibo:// | |
| iQiyi | com.qiyi.video | qiyi-iphone:// |
| Ele.me | me.ele | eleme:// |
| Didi | com.sdu.didi.psnger | diditaxi:// |
| Ctrip | ctrip.android.view | ctrip:// |
| Kuaishou | com.smile.gifmaker | gifshow:// |
Com o pacote e a atividade identificados, você pode montar as desired_caps e iniciar a automação:
from appium import webdriver
caps = {
'platformName': 'Android',
'deviceName': 'dispositivo_exemplo',
'appPackage': 'com.ss.android.article.news',
'appActivity': '.MainActivity',
'noReset': True
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', caps)