Appium — co to je, principy fungování a cross-platform testování

Autor: IT Sectr Publikováno: 2026-04-09 Doba čtení: 8 min

Appium je cross-platform framework pro automatizaci testování mobilních, webových a desktopových aplikací, založený na protokolu WebDriver. Umožňuje psát testy v libovolném programovacím jazyce a spouštět je na Android, iOS a Windows beze změny kódu. Podle údajů Appium Foundation, 2025 poskytuje protokol WebDriver jednotné rozhraní pro interakci s aplikacemi na různých platformách.

Hlavní body

  • Appium — cross-platform framework pro automatizaci testování založený na WebDriver
  • Jednotné API umožňuje psát testy v Java, Python, JavaScript, Ruby, C# a dalších jazycích
  • Podpora platforem zahrnuje iOS, Android, Windows a webové aplikace
  • Přístup Black-box nevyžaduje přístup ke zdrojovému kódu aplikace
  • Appium Server funguje jako proxy mezi testem a nativním ovladačem platformy

Co je Appium

Appium je open-source framework pro automatizaci testování mobilních aplikací, postavený na architektuře klient-server. Server Appium přijímá příkazy od klienta prostřednictvím protokolu WebDriver a deleguje je nativním ovladačům: XCUITest pro iOS, UiAutomator2 pro Android a WinAppDriver pro Windows.

Historie a komunita

Appium bylo vytvořeno v roce 2013 a od té doby se stalo průmyslovým standardem pro cross-platform testování. Projekt je spravován Appium Foundation a podporován velkými společnostmi: Sauce Labs, HeadSpin, Microsoft. Měsíčně používá Appium více než 500 tisíc testerů po celém světě.

Podporované typy aplikací

Appium podporuje tři typy aplikací: nativní (iOS, Android, Windows), mobilní webové prohlížeče (Safari, Chrome) a hybridní aplikace (WebView uvnitř nativního shellu). Každý typ používá svůj vlastní kontext: NATIVE_APP, WEBVIEW nebo CHROMIUM.

Architektura Appium a WebDriver

Architektura Appium se skládá ze čtyř vrstev: kód klienta → Appium Client Library → Appium Server → nativní ovladač. Klientská knihovna implementuje protokol WebDriver a odesílá HTTP požadavky na server. Server je převádí na příkazy nativního ovladače platformy.

Protokol WebDriver

WebDriver je standard W3C pro automatizaci prohlížečů, upravený Appium pro mobilní zařízení. Každá akce — nalezení prvku, kliknutí, zadání textu — je odeslána jako HTTP požadavek na server. Například POST /session/{id}/element vytváří novou testovací relaci.

Relace a Desired Capabilities

Každý test začíná vytvořením relace prostřednictvím objektu Desired Capabilities. V něm se uvádí: platformName, deviceName, appPath, automationName a další parametry. Appium používá tato data k výběru vhodného nativního ovladače a konfiguraci zařízení.

python
# Příklad Desired Capabilities pro 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)

Instalace a konfigurace Appium

Instalace Appium se provádí přes npm: npm install -g appium. Po instalaci je třeba nakonfigurovat nativní ovladače pro každou platformu: appium driver install xcuitest a appium driver install uiautomator2. Pro práci s iOS je vyžadován Xcode a pro Android — Android SDK.

Appium Inspector

Appium Inspector je grafický nástroj pro inspekci prvků rozhraní. Připojuje se k běžícímu serveru Appium a zobrazuje hierarchii komponent UI, jejich atributy a lokátory. Inspector umožňuje zkontrolovat selektor před napsáním testu.

Spuštění serveru

Server Appium se spouští příkazem appium s volitelnými parametry: port, adresa, logování. Ve výchozím nastavení server naslouchá na portu 4723. Pro paralelní spuštění více zařízení se používají různé porty nebo clustery Appium.

bash
# Spuštění serveru Appium s logováním
appium \
  --port 4723 \
  --log-level debug \
  --use-plugins images \
  --base-path /wd/hub

Psaní testů v Appium

Testy Appium používají vzor Page Object pro organizaci kódu. Každá obrazovka aplikace je popsána samostatnou třídou s lokátory prvků a metodami interakce. Model Page Object usnadňuje údržbu testů při změnách rozhraní a znovu používá selektory mezi testovacími scénáři.

Lokátory prvků

Appium podporuje mnoho strategií vyhledávání prvků: id, xpath, accessibilityId, className, androidUIAutomator a iOSClassChain. Nejpřednostnější jsou accessibilityId a id — jsou stabilní při změnách rozvržení. XPath by se měl používat pouze při absenci jiných lokátorů.

java
// Page Object pro přihlašovací obrazovku
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();
    }
}

Práce s gesty a akcemi

Appium podporuje složitá gesta prostřednictvím třídy TouchAction nebo W3C Actions API: přejetí, multitouch, dlouhé stisknutí, posouvání k prvku. Nové W3C Actions API je doporučeno pro nové projekty, protože je standardizované a funguje stabilněji na různých verzích platforem.

Srovnání Appium s alternativami

Appium je často srovnáváno s Detox, XCUITest a Espresso. Hlavní výhodou Appium je cross-platformovost: jeden test lze spustit na iOS a Android beze změn. Detox však poskytuje lepší synchronizaci pro React Native a XCUITest/Espresso poskytují rychlejší provádění nativních testů.

Kdy zvolit Appium

Appium je vhodné pro projekty, které vyžadují jednotný framework pro iOS, Android a web. Je nepostradatelný v týmech s testery píšícími v Java nebo Python. Pro projekty React Native s velkým počtem E2E testů je lepší zvážit Detox kvůli automatické synchronizaci.

FrameworkPřístupRychlostCross-platform
AppiumBlack-boxStředníiOS, Android, Windows
DetoxGray-boxVysokáiOS + Android (React Native)
XCUITestWhite-boxVysokáPouze iOS

Appium Grid a testování v cloudu

Appium Grid je rozšíření pro paralelní spouštění testů na mnoha zařízeních současně. Appium Grid je postaven na základě Selenium Grid a umožňuje distribuovat testy mezi několik serverů Appium, z nichž každý spravuje svou vlastní sadu zařízení nebo emulátorů. To je kritické pro velké projekty, kde regresní běh na jednom zařízení trvá hodiny — Grid zkracuje čas na minuty úměrně počtu uzlů.

Konfigurace Grid

Pro konfiguraci Grid se používá konfigurační soubor ve formátu JSON, ve kterém jsou popsány uzly (nodes) se zařízeními. Každý uzel specifikuje: port serveru, seznam zařízení s platformou, verzí OS a maximálním počtem relací. Hub distribuuje testy na volné uzly a zajišťuje maximální vytížení infrastruktury.

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

Cloudové služby

Pokud vlastní infrastruktura zařízení není k dispozici, existují cloudové služby: Sauce Labs, BrowserStack, LambdaTest. Poskytují stovky reálných zařízení a emulátorů v cloudu. Integrace s Appium je minimální: stačí uvést URL cloudového hubu a přihlašovací údaje v Desired Capabilities místo localhost.

Paralelní spouštění

Appium podporuje paralelní spouštění testů pomocí TestNG (Java) nebo pytest-xdist (Python). Paralelizace vyžaduje jedinečné porty pro každou relaci a izolovaná testovací data. Každé vlákno spouští svou vlastní relaci Appium na samostatném zařízení nebo emulátoru. Při použití cloudových služeb je paralelizace automatická — platforma sama distribuuje testy na dostupná zařízení a uvolňuje je po dokončení.

Diagnostika a ladění Appium

Při problémech s Appium je prvním krokem kontrola logu serveru (appium --log-level debug). Typické chyby: port je obsazený (uveďte jiný --port), nekompatibilní verze ovladače, chybějící Android SDK nebo Xcode. Pro iOS se ujistěte, že WebKitAgent běží a má přístup k simulátoru.

Problémy s hledáním prvků

Pokud Appium nenachází prvek, zkontrolujte: je kontext správný (NATIVE_APP vs WEBVIEW), je prvek viditelný na obrazovce, vyžaduje posouvání a je lokátor správný. Použijte Appium Inspector pro interaktivní vyhledávání a kontrolu XPath výrazů před vložením do testu. Je také užitečné zapnout čekání na výskyt prvku přes WebDriverWait — to řeší problém synchronizace při pomalém načítání UI.

Správa relací

Nesprávné ukončení relací je častou příčinou nestability testů Appium. Vždy zavírejte ovladač v bloku finally nebo přes AutoCloseable. Při chybách použijte vynucený driver.quit(). Pro iOS se ujistěte, že WebKitAgent (WDA) se restartuje mezi relacemi, jinak může dojít k chybě session not created. Pro sledování stavu relací v CI je užitečné připojit plugin Appium Dashboard, který vizualizuje stav všech běžících testů v reálném čase.

Příznaky stability

Pro zvýšení stability testů používejte: shouldTerminateApp (ukončení aplikace mezi testy), noReset (uchování dat mezi relacemi), autoGrantPermissions (automatické povolení systémových dialogů). Také se doporučuje vypnout animace na zařízení přes Developer Options.

Často kladené otázky

Jaké programovací jazyky Appium podporuje?

Appium podporuje všechny populární jazyky prostřednictvím klientských knihoven: Java, Python, JavaScript, Ruby, C#, PHP a Kotlin. Každá knihovna implementuje stejný protokol WebDriver, což umožňuje psát cross-platform testy v libovolném jazyce.

Je pro Appium potřeba skutečný telefon?

Ne, Appium funguje jak se skutečnými zařízeními, tak s emulátory a simulátory. Pro Android se používají emulátory Android Studio, pro iOS — simulátory Xcode. Skutečná zařízení jsou potřebná pouze pro testování hardwarových funkcí: senzorů, NFC, kamery.

Jaký je rozdíl mezi Appium 1 a Appium 2?

Appium 2 bylo kompletně přepsáno s modulární architekturou s pluginy a samostatnými ovladači. V Appium 1 byly všechny ovladače integrovány do serveru. Appium 2 používá příkazy appium driver install pro instalaci ovladačů a appium plugin install pro pluginy.

Jak Appium nachází prvky na obrazovce?

Appium používá vyhledávací strategie: By.id, By.xpath, By.accessibilityId, By.className, By.androidUIAutomator a By.iOSClassChain. Pro rychlost se doporučuje používat accessibilityId — je stabilní a nezávisí na změnách rozvržení.

Lze testovat webové aplikace v Appium?

Ano, Appium podporuje testování mobilních prohlížečů — Safari na iOS a Chrome na Android. K tomu se používá kontext WEBVIEW nebo CHROMIUM. Testy se spouštějí v prohlížeči přes standardní WebDriver, podobně jako Selenium.

Shrnutí

  • Appium — cross-platform E2E framework založený na WebDriver s podporou iOS, Android a Windows
  • Architektura klient-server umožňuje psát testy v Java, Python, JavaScript, Ruby a C#
  • Desired Capabilities konfigurují testovací relaci pro konkrétní platformu a zařízení
  • Model Page Object je doporučen pro organizaci testovacího kódu a opětovné použití selektorů
  • Appium Inspector pomáhá při inspekci prvků rozhraní a výběru lokátorů
  • Přístup Black-box nevyžaduje přístup ke zdrojovému kódu aplikace
  • Appium 2 používá modulární architekturu s instalovatelnými ovladači a pluginy

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také