Активно начал изучать автоматизацию мобильных приложенй на 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 -v
node -v
Теперь необходимо проверить установлен ли chrome webdriver, для этого нужно выполнить команду в терминале:
chromedriver -v

Если терминал вывел command not found: python, то вам необходимо установить ChromeDriver, сделаем это через Homebrew:
brew install chromedriver
Homebrew автоматически установит нужную версию 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/sdk
export 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 и т.д.
Автор: Voviizzz