Skip to content

Latest commit

 

History

History
111 lines (78 loc) · 4.87 KB

File metadata and controls

111 lines (78 loc) · 4.87 KB

Bem-vindo ao Appium4Noobs!

O que é o Appium?

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.

Por que usar o Appium?

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.

Comparativo: Appium vs Alternativas

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

Tipos de Aplicações Suportadas

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)

Arquitetura do Appium

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.

Appium 2.x — O que mudou?

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

O que você vai aprender neste curso?

Ao longo deste guia você vai aprender a:

  1. Instalar e configurar o Appium no seu sistema operacional
  2. Identificar elementos na tela com diferentes estratégias de seleção
  3. Interagir com apps Android e iOS usando Java
  4. Organizar testes com o padrão Page Object Model (POM)
  5. Executar testes em paralelo em múltiplos dispositivos
  6. Integrar testes ao pipeline de CI/CD

Exemplo Rápido

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