Appium — ce este, principii de funcționare și testare cross-platform

Autor: IT Sectr Publicat: 2026-04-09 Timp de citire: 8 min

Appium este un framework cross-platform pentru automatizarea testării aplicațiilor mobile, web și desktop, bazat pe protocolul WebDriver. Permite scrierea testelor în orice limbaj de programare și rularea lor pe Android, iOS și Windows fără modificarea codului. Conform datelor Appium Foundation, 2025, protocolul WebDriver asigură o interfață unică de interacțiune cu aplicațiile pe diferite platforme.

Principalele puncte

  • Appium — framework cross-platform pentru automatizarea testării bazat pe WebDriver
  • API unic permite scrierea testelor în Java, Python, JavaScript, Ruby, C# și alte limbaje
  • Suport de platforme include iOS, Android, Windows și aplicații web
  • Abordarea Black-box nu necesită acces la codul sursă al aplicației
  • Appium Server acționează ca proxy între test și driverul nativ al platformei

Ce este Appium

Appium este un framework open-source pentru automatizarea testării aplicațiilor mobile, construit pe arhitectura client-server. Serverul Appium primește comenzi de la client prin protocolul WebDriver și le deleagă driverelor native: XCUITest pentru iOS, UiAutomator2 pentru Android și WinAppDriver pentru Windows.

Istorie și comunitate

Appium a fost creat în 2013 și de atunci a devenit standardul industriei pentru testarea cross-platform. Proiectul este gestionat de Appium Foundation și susținut de companii mari: Sauce Labs, HeadSpin, Microsoft. Lunar, peste 500 de mii de testeri din întreaga lume folosesc Appium.

Tipuri de aplicații suportate

Appium suportă trei tipuri de aplicații: native (iOS, Android, Windows), browsere web mobile (Safari, Chrome) și aplicații hibride (WebView în interiorul unui shell nativ). Fiecare tip folosește propriul context: NATIVE_APP, WEBVIEW sau CHROMIUM.

Arhitectura Appium și WebDriver

Arhitectura Appium constă din patru niveluri: codul client → Appium Client Library → Appium Server → driver nativ. Biblioteca client implementează protocolul WebDriver și trimite cereri HTTP către server. Serverul le transformă în comenzi ale driverului nativ al platformei.

Protocolul WebDriver

WebDriver este standardul W3C pentru automatizarea browserelor, adaptat de Appium pentru dispozitive mobile. Fiecare acțiune — căutarea unui element, clic, introducerea textului — este trimisă ca cerere HTTP către server. De exemplu, POST /session/{id}/element creează o nouă sesiune de testare.

Sesiuni și Desired Capabilities

Fiecare test începe prin crearea unei sesiuni prin obiectul Desired Capabilities. În acesta se specifică: platformName, deviceName, appPath, automationName și parametri suplimentari. Appium folosește aceste date pentru a selecta driverul nativ potrivit și configurarea dispozitivului.

python
# Exemplu Desired Capabilities pentru Android
desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Pixel_4',
    'app': '/path/to/app.apk',
    'automationName': 'UiAutomator2',
    'appPackage': 'com.example.app',
    'appActivity': '.MainActivity'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

Instalarea și configurarea Appium

Instalarea Appium se face prin npm: npm install -g appium. După instalare, trebuie configurate driverele native pentru fiecare platformă: appium driver install xcuitest și appium driver install uiautomator2. Pentru lucrul cu iOS este necesar Xcode, iar pentru Android — Android SDK.

Appium Inspector

Appium Inspector este un instrument grafic pentru inspecția elementelor interfeței. Se conectează la serverul Appium pornit și arată ierarhia componentelor UI, atributele și localizatorii acestora. Inspector permite verificarea selectorului înainte de scrierea testului.

Pornirea serverului

Serverul Appium se pornește cu comanda appium cu parametri opționali: port, adresă, logare. Implicit, serverul ascultă pe portul 4723. Pentru rularea paralelă a mai multor dispozitive se folosesc porturi diferite sau clustere Appium.

bash
# Pornirea serverului Appium cu logare
appium \
  --port 4723 \
  --log-level debug \
  --use-plugins images \
  --base-path /wd/hub

Scrierea testelor în Appium

Testele Appium folosesc modelul Page Object pentru organizarea codului. Fiecare ecran al aplicației este descris de o clasă separată cu localizatori de elemente și metode de interacțiune. Modelul Page Object simplifică întreținerea testelor la modificări ale interfeței și reutilizează selectorii între scenariile de test.

Localizatori de elemente

Appium suportă multiple strategii de căutare a elementelor: id, xpath, accessibilityId, className, androidUIAutomator și iOSClassChain. Cele mai preferate sunt accessibilityId și id — sunt stabile la modificări ale layout-ului. XPath trebuie folosit doar în absența altor localizatori.

java
// Page Object pentru ecranul de autentificare
public class LoginPage {
    private AppiumDriver driver;

    private MobileElement emailField =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("emailInput"));
    private MobileElement passwordField =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("passwordInput"));
    private MobileElement loginButton =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("loginButton"));

    public void login(String email, String password) {
        emailField.sendKeys(email);
        passwordField.sendKeys(password);
        loginButton.click();
    }
}

Lucrul cu gesturi și acțiuni

Appium suportă gesturi complexe prin clasa TouchAction sau W3C Actions API: swipe-uri, multitouch, apăsări lungi, derulare la element. Noul W3C Actions API este recomandat pentru proiecte noi, deoarece este standardizat și funcționează mai stabil pe diferite versiuni de platforme.

Compararea Appium cu alternative

Appium este adesea comparat cu Detox, XCUITest și Espresso. Principalul avantaj al Appium este cross-platformitatea: un singur test poate fi rulat pe iOS și Android fără modificări. Totuși, Detox oferă o sincronizare mai bună pentru React Native, iar XCUITest/Espresso oferă o execuție mai rapidă pentru testele native.

Când să alegeți Appium

Appium este potrivit pentru proiecte care necesită un framework unic pentru iOS, Android și web. Este indispensabil în echipele cu testeri care scriu în Java sau Python. Pentru proiecte React Native cu multe teste E2E, este mai bine să luați în considerare Detox datorită sincronizării automate.

FrameworkAbordareVitezăCross-platform
AppiumBlack-boxMedieiOS, Android, Windows
DetoxGray-boxRidicatăiOS + Android (React Native)
XCUITestWhite-boxRidicatăDoar iOS

Appium Grid și testarea în cloud

Appium Grid este o extensie pentru rularea paralelă a testelor pe mai multe dispozitive simultan. Appium Grid este construit pe baza Selenium Grid și permite distribuirea testelor între mai multe servere Appium, fiecare gestionând propriul set de dispozitive sau emulatoare. Acest lucru este critic pentru proiecte mari, unde o rulare de regresie pe un singur dispozitiv durează ore — Grid reduce timpul la minute proporțional cu numărul de noduri.

Configurarea Grid

Pentru configurarea Grid se folosește un fișier de configurare în format JSON, în care sunt descrise nodurile (nodes) cu dispozitive. Fiecare nod specifică: portul serverului, lista de dispozitive cu platforma, versiunea sistemului de operare și numărul maxim de sesiuni. Hub distribuie testele către nodurile libere, asigurând încărcarea maximă a infrastructurii.

json
{
  "capabilities": [
    {
      "browserName": "android",
      "platformName": "Android",
      "deviceName": "Pixel_4",
      "platformVersion": "14.0",
      "maxInstances": 2
    }
  ],
  "configuration": {
    "port": 4724,
    "registerCycle": 5000
  }
}

Servicii cloud

Dacă infrastructura proprie de dispozitive nu este disponibilă, există servicii cloud: Sauce Labs, BrowserStack, LambdaTest. Acestea oferă sute de dispozitive reale și emulatoare în cloud. Integrarea cu Appium este minimă: este suficient să specificați URL-ul hub-ului cloud și credențialele în Desired Capabilities în loc de localhost.

Rularea paralelă

Appium suportă rularea paralelă a testelor cu TestNG (Java) sau pytest-xdist (Python). Paralelizarea necesită porturi unice pentru fiecare sesiune și date de test izolate. Fiecare fir de execuție pornește propria sesiune Appium pe un dispozitiv sau emulator separat. La utilizarea serviciilor cloud, paralelizarea este automată — platforma distribuie singură testele către dispozitivele disponibile și le eliberează după finalizare.

Diagnosticarea și depanarea Appium

La probleme cu Appium, primul pas este verificarea log-ului serverului (appium --log-level debug). Erori tipice: port ocupat (specificați alt --port), versiune incompatibilă de driver, lipsa Android SDK sau Xcode. Pentru iOS, asigurați-vă că WebKitAgent rulează și are acces la simulator.

Probleme cu găsirea elementelor

Dacă Appium nu găsește un element, verificați: contextul corect (NATIVE_APP vs WEBVIEW), dacă elementul este vizibil pe ecran, dacă necesită derulare și dacă localizatorul este corect. Folosiți Appium Inspector pentru căutare interactivă și verificarea expresiilor XPath înainte de inserarea în test. De asemenea, este utilă activarea așteptării apariției elementului prin WebDriverWait — aceasta rezolvă problema de sincronizare la încărcarea lentă a UI.

Gestionarea sesiunilor

Finalizarea incorectă a sesiunilor este o cauză frecventă a instabilității testelor Appium. Închideți întotdeauna driverul în blocul finally sau prin AutoCloseable. La erori, folosiți forțat driver.quit(). Pentru iOS, asigurați-vă că WebKitAgent (WDA) este repornit între sesiuni, altfel poate apărea eroarea session not created. Pentru monitorizarea stării sesiunilor în CI, este util să conectați pluginul Appium Dashboard care vizualizează statusul tuturor testelor în timp real.

Steaguri de stabilitate

Pentru a crește stabilitatea testelor, utilizați: shouldTerminateApp (închiderea aplicației între teste), noReset (păstrarea datelor între sesiuni), autoGrantPermissions (acordarea automată a permisiunilor de sistem). De asemenea, se recomandă dezactivarea animațiilor pe dispozitiv prin Developer Options.

Întrebări frecvente

Ce limbaje de programare suportă Appium?

Appium suportă toate limbajele populare prin biblioteci client: Java, Python, JavaScript, Ruby, C#, PHP și Kotlin. Fiecare bibliotecă implementează același protocol WebDriver, permițând scrierea de teste cross-platform în orice limbaj.

Este necesar un telefon real pentru Appium?

Nu, Appium funcționează atât cu dispozitive reale, cât și cu emulatoare și simulatoare. Pentru Android se folosesc emulatoarele Android Studio, pentru iOS — simulatoarele Xcode. Dispozitivele reale sunt necesare doar pentru testarea funcțiilor hardware: senzori, NFC, cameră.

Care este diferența dintre Appium 1 și Appium 2?

Appium 2 a fost complet rescris cu arhitectură modulară cu pluginuri și drivere separate. În Appium 1, toate driverele erau încorporate în server. Appium 2 folosește comenzile appium driver install pentru instalarea driverelor și appium plugin install pentru pluginuri.

Cum găsește Appium elementele pe ecran?

Appium folosește strategii de căutare: By.id, By.xpath, By.accessibilityId, By.className, By.androidUIAutomator și By.iOSClassChain. Pentru viteză, se recomandă utilizarea accessibilityId — este stabil și nu depinde de modificările layout-ului.

Se pot testa aplicații web în Appium?

Da, Appium suportă testarea browserelor mobile — Safari pe iOS și Chrome pe Android. Pentru aceasta se folosește contextul WEBVIEW sau CHROMIUM. Testele se rulează în browser prin WebDriver standard, similar cu Selenium.

Concluzii

  • Appium — framework cross-platform E2E bazat pe WebDriver cu suport pentru iOS, Android și Windows
  • Arhitectura client-server permite scrierea testelor în Java, Python, JavaScript, Ruby și C#
  • Desired Capabilities configurează sesiunea de testare pentru o platformă și un dispozitiv specific
  • Modelul Page Object este recomandat pentru organizarea codului de test și reutilizarea selectorilor
  • Appium Inspector ajută la inspectarea elementelor interfeței și alegerea localizatorilor
  • Abordarea Black-box nu necesită acces la codul sursă al aplicației
  • Appium 2 folosește arhitectură modulară cu drivere și pluginuri instalabile

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și