Активно начал изучать автоматизацию мобильных приложений на Appium + Pytest, но на просторах рунета не нашел нормальную документацию по построению проекта и запуска первых тестов. Решил написать данную статью.
Для начала работы необходимо настроить рабочее окружение. Необходимо проверить установлен ли на вашей машине Python. Сделать это можно с помощью команды python3 -V в терминале. Далее терминал должен вывести вашу версию Python.

В моем случае Python установлен версии 3.13.0
Если после ввода в терминал команды python3 - V - терминал вывел command not found: python, то вам необходимо установить Python, сделать это можно следующими способами (необходимо установить в виртуальное окружение вашего проекта):
есть несколько способов установки, я остановился на менеджере пакетов для macOS - Homebrew.
Данный менеджер пакетов существенно ускоряет и упросить установку всех необходимых пакетов. Давайте проверим установлен ли у вас на машине Homebrew. Вводим данную команду в терминале:
brew --versionЕсли у вас установлен Homebrew на машине, терминал должен вывести версию Homebrew.
Homebrew 4.4.13Если терминал вывел ошибку, вам необходимо установить Homebrew.
Установка Homebrew
В терминале вводим:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Отлично, у нас установлен менеджер пакетов. В дальнейшем я буду использовать его. Теперь с помощью данного менеджера пакетов установим Python, для это в терминале вводим:
brew install pythonМы установили Python с помощью Homebrew, теперь необходимо проверить его установку, вводим в терминале:
python3 -VТак же Python можно установить через официальный сайт Python.
Следующим этапом нам необходимо установить Node.js, но так как я выбрал установку через Homebrew, в этом и дальнейшем пунктах - буду пользоваться им.
Установка Node.js через Homebrew
Чтобы проверить установлена ли Node.js на вашей машине, вам необходим выполнить следующую команду в терминале:
node -vЕсли Node.js у вас установлена, то терминал выведет версию.

Для установки Node.js через Homebre вам потребуется выполнить в терминале следующую команду:
brew install nodeПосле завершения установки, необходимо проверить версию установки Npde.js и npm, для этого в терминале выполним следующие команды:
npm -vnode -vТеперь необходимо проверить установлен ли chrome webdriver, для этого нужно выполнить команду в терминале:
chromedriver -v
Если терминал вывел command not found: python, то вам необходимо установить ChromeDriver, сделаем это через Homebrew:
brew install chromedriverHomebrew автоматически установит нужную версию ChromeDriver, проверить установку можно выполнением следующей команды в терминале:
chromedriver --versionУстановка необходимых библиотек
Для установки необходимых библиотек, в своем виртуальном окружении выполняем следующую команду:
pip install Appium-Python-Client pytestУстановка Appium
Установка Appium на Mac может быть выполнена двумя основными способами: через терминал с использованием Node.js или с помощью графического интерфейса Appium Desktop. Так как ранее мы установили Node.js, мы будем использовать его.
Для установки Appium через Node.js в терминале выполняем следующую команду:
npm install -g appiumНу и соответственно для проверки установки Appium в терминале выполняем команду:
appium --versionДля запуска Appium - выполняем команду:
appiumЕсли вы у вас верно установлен Appium, то после ввода команды Appium - терминал отобразит следующее:

Установка Appium Inspector
На данном этапе нам необходимо установить Appium Inspector. Тут все довольно просто, переходим на страничку гита и качаем Appium Inspector, затем переносим его в папку Applications. Но для чего ?
P.S. если у вас не запускается Appium Inspector из-за ошибки безопасности, то идем в настройки "Конфиденциальность и безопасность" > листаем ниже и должны увидеть, что Appium Inspector заблокирован - принимаем.
Appium Inspector нам понадобится для исследования интерфейса нашего мобильного приложения и поиска нужных локаторов. С помощью Appium Inspector мы будем находить нужные элементы интерфейса и взаимодействовать с ними, просматривать детальные свойства найденных элементов. Так же Appium Inspector является кроссплатформенным.
После того как открыли Appium Inspector, вам необходимо ввести ваши Capability

Данные Сapability понадобятся для нашего теста, но если вы хотите писать тесты для какого-то приложения, то вам в Сapability необходимо указать следующее:

Установка Android SDK
Для установки Android SDK на Mac вам нужно скачать Android Studio с официального сайта разработчиков Android. Перейдите на официальный сайт Android Studio. (если ваша геолокация находится в РФ - рекомендую включить VPN)
Настройка переменной ANDROID_HOME
Если после установки вы попытались запустить Appium Inspector и вы увидели ошибку, связанную с переменной ANDROID_HOME, то данный пункт для вас. Вам необходимо выполнить следующие шаги:
Открываем терминал и выполняем команду:
nano ~/.bash_profileЗатем вам необходимо добавить строку:
export ANDROID_HOME=$HOME/Library/Android/sdkНу и сохранить изменения:
sourse ~/.bash_profileЕсли вам это не помогло, добавляем еще переменные, которые я привел ниже:
Путь должен быть там, где установлен Android
export ANDROID_HOME=/Users/username/Library/Android/sdkexport PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-toolsСохраняем:
source ~/.bash_profileВ конечном итоге у вас должны быть добавлены следующие переменные:

Создание проекта
Project_directory/
│ ├── tests/ │
├── test_apply.py
│ ├── app/ │
└── main_application.apk (или .ipa для iOS)
│ └── utils/
├── appium_utils.py
└── ...

Для первого запуска подойдет такая структура папок
В файле test_app.py напишем простой тест, который можно взять с официального сайта Appium:
import pytest
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from appium.options.android import UiAutomator2Options
capabilities = dict(
platformName='Android',
automationName='uiautomator2',
deviceName='Android',
appPackage='com.android.settings',
appActivity='.Settings',
language='en',
locale='US'
)
capabilities_options = UiAutomator2Options().load_capabilities(capabilities)
appium_server_url = 'http://localhost:4723'
@pytest.fixture(scope='function')
def driver():
driver = webdriver.Remote(appium_server_url, options=capabilities_options)
yield driver
if driver:
driver.quit()
def test_find_battery(driver) -> None:
el = driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Battery"]')
el.click()Запуск проекта
Запускаем Android SDK, затем выбираем Virtual Device Manager.

Затем нам необходим выбрать и запустить симулятор мобильного телефона:

Выбираем и запускаем (жмем на кнопку play)

Теперь необходимо запустить сервер Appium, для этого вводим в терминале:
AppiumТеперь переходим в Appium Inspector и жмем "Start Session":


Если при запуске Appium Inspector, возникают какие-то ошибки - пробуйте перезапустить эмулятор и Appium server (Раздел называется "Запуск проекта").
Переходим в свой проект и в терминале вводим:
pytest
P.S. Все ваши тесты должны лежать в папке tests и начинаться на: test_.
Например: test_login, test_cart и т.д.
