Appium
Краткий гайд по кроссплатформенному UI-тестированию
1. Что это
Appium - инструмент для автоматизации мобильных и веб-приложений. Тесты идут снаружи приложения
(black-box) через WebDriver-протокол.
- Android и iOS одним стеком
- Языки клиентов: Java, Kotlin, Python, JS/TS, и др.
- Подходит для E2E, регрессии, CI на реальных устройствах/эмуляторах
2. Что установить
- [Link] + Appium 2 (`npm i -g appium`)
- Драйвер UiAutomator2: `appium driver install uiautomator2`
- Android SDK / эмулятор или устройство с USB debugging
- Клиентская библиотека, например WebdriverIO / Appium-Python-Client
3. Запуск сервера
appium
# или с явным адресом
appium --address [Link] --port 4723
4. Capabilities (Android)
{
"platformName": "Android",
"appium:automationName": "UiAutomator2",
"appium:deviceName": "Android Emulator",
"appium:app": "/path/to/[Link]",
"appium:appPackage": "[Link]",
"appium:appActivity": ".MainActivity",
"appium:noReset": true
}
5. Пример на Python
1
from appium import webdriver
from [Link] import UiAutomator2Options
from [Link] import AppiumBy
options = UiAutomator2Options()
options.platform_name = "Android"
options.device_name = "Android Emulator"
[Link] = "/path/to/[Link]"
driver = [Link]("[Link] options=options)
email = driver.find_element([Link], "[Link]:id/email")
email.send_keys("user@[Link]")
driver.find_element(AppiumBy.ACCESSIBILITY_ID, "login").click()
[Link]()
6. Локаторы
- id / resource-id - стабильнее всего на Android
- accessibility id (contentDescription) - хороший кроссплатформенный выбор
- xpath - гибко, но хрупко; используйте в последнюю очередь
- UiSelector / -android uiautomator - мощный поиск на Android
- class name / text - когда нет id
7. Паттерны стабильных тестов
- Явные ожидания (WebDriverWait) вместо sleep
- Page Object Model - локаторы и действия в отдельных классах
- Тестовые аккаунты / мок-бэкенд для предсказуемых данных
- Не завязывайтесь на координаты и порядок sibling-элементов
8. CI и запуск
# типичный пайплайн
1) поднять эмулятор / подключить device farm
2) appium &
3) собрать APK/IPA
4) прогнать suite (pytest / WDIO / JUnit)
5) сохранить скриншоты и Appium logs как артефакты
9. Частые ошибки
- Сервер Appium не запущен или неверный порт
- Несовместимые версии Appium 2 / driver / client
- Неверный appPackage/appActivity - приложение не стартует
- Флаки без wait - элемент ещё не в DOM/иерархии
- Путаница Espresso vs Appium: Espresso внутри app, Appium снаружи
Итог: поставьте Appium 2 + UiAutomator2, задайте capabilities, пишите тесты через client SDK с явными
2
ожиданиями и устойчивыми локаторами.