O Appium é um framework open-source de automação de testes para aplicações mobile e desktop. Ele permite escrever testes para apps iOS, Android e Windows usando a linguagem de programação de sua preferência — Java, Python, JavaScript, Ruby, C#, entre outras.
O Appium foi criado com base no protocolo WebDriver (W3C), o mesmo usado pelo Selenium para automação web. Isso significa que se você já conhece Selenium, a curva de aprendizado é muito menor.
Testar aplicativos mobile é essencial para garantir a qualidade do produto. O Appium se destaca por ser cross-platform: um único conjunto de APIs para testar tanto Android quanto iOS.
| Critério | Appium | Maestro | Espresso | XCUITest |
|---|---|---|---|---|
| Suporte iOS + Android | ✅ | ✅ | ❌ só Android | ❌ só iOS |
| Linguagem dos testes | Qualquer | YAML | Java/Kotlin | Swift/Obj-C |
| Apps nativos | ✅ | ✅ | ✅ | ✅ |
| Apps híbridos | ✅ | Parcial | ❌ | ❌ |
| Web mobile | ✅ | ❌ | ❌ | ❌ |
| Acesso ao device real | ✅ | ✅ | ✅ | ✅ |
| CI/CD | ✅ | ✅ | ✅ | ✅ |
| Comunidade | Muito grande | Crescendo | Grande | Moderada |
O Appium suporta três tipos de aplicações mobile:
- Nativas: apps desenvolvidos com as SDKs nativas (Android SDK, Apple SDK)
- Híbridas: apps que combinam código nativo com WebView (ex: React Native, Ionic)
- Web Mobile: sites acessados pelo browser do dispositivo (Chrome, Safari)
O Appium funciona como um servidor HTTP que recebe comandos do seu código de teste (cliente) e os traduz em ações no dispositivo. A comunicação segue o protocolo WebDriver W3C.
┌─────────────────┐ HTTP ┌──────────────────┐ ┌──────────────┐
│ Código de Teste │ ──────────────────▶│ Appium Server │ ──────▶│ Dispositivo │
│ (Java/Python/ │◀────────────────── │ (localhost:4723)│◀────── │ (Android/ │
│ JS/etc.) │ │ │ │ iOS) │
└─────────────────┘ └──────────────────┘ └──────────────┘
Isso significa que o Appium é independente de linguagem — qualquer cliente que fale HTTP pode interagir com ele.
A versão 2 do Appium trouxe mudanças importantes:
- Drivers separados: os drivers para Android (
UiAutomator2) e iOS (XCUITest) agora são instalados separadamente - Plugins: nova arquitetura extensível com plugins para funcionalidades extras
- CLI aprimorada: ferramentas de diagnóstico e gerenciamento de drivers
- Segurança melhorada: configurações mais granulares de permissões
Ao longo deste guia você vai aprender a:
- Instalar e configurar o Appium no seu sistema operacional
- Identificar elementos na tela com diferentes estratégias de seleção
- Interagir com apps Android e iOS usando Java
- Organizar testes com o padrão Page Object Model (POM)
- Executar testes em paralelo em múltiplos dispositivos
- Integrar testes ao pipeline de CI/CD
Veja como é um teste simples de login com Appium em Java:
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;
public class LoginTest {
public static void main(String[] args) throws Exception {
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("platformName", "Android");
caps.setCapability("appium:deviceName", "emulator-5554");
caps.setCapability("appium:app", "/caminho/para/seu/app.apk");
caps.setCapability("appium:automationName", "UiAutomator2");
AndroidDriver driver = new AndroidDriver(
new URL("http://localhost:4723"), caps
);
driver.findElement(By.id("com.meuapp:id/campo_email"))
.sendKeys("usuario@email.com");
driver.findElement(By.id("com.meuapp:id/campo_senha"))
.sendKeys("minha-senha");
driver.findElement(By.id("com.meuapp:id/btn_entrar"))
.click();
// Verifica se o login foi bem-sucedido
assert driver.findElement(By.id("com.meuapp:id/texto_boas_vindas"))
.isDisplayed();
driver.quit();
}
}Ir para: Comunicação