Skip to content

20. Мобильная автоматизация #2. Разрабатываем автотесты с эмулятором Android устройства Python

BohdanObruch edited this page Jul 5, 2024 · 11 revisions

Данный раздел разделен на несколько частей (каждый пункт - это ссылка на соответствующий раздел):



Инструкция по настройке системы на Windows

Нажать, чтобы раскрыть

1. Установка Node.js и npm

Нажать, чтобы раскрыть

Для начала необходимо проверить установлены ли Node.js и npm на вашем компьютере. Для этого необходимо открыть командную строку и выполнить следующие команды:

node -v
npm -v

Если Node.js и npm не установлены, то вы увидите сообщение об ошибке.

Установка Node.js

Для того чтобы установить Node.js и npm необходимо перейти на сайт Node.js и скачать актуальную версию.

После скачивания необходимо запустить установщик и следовать инструкциям.

Обратите внимание чтобы во время установки были отображены как на скриншоте следующие опции, а именно отображение Add to PATH и npm package manager.

После установки необходимо проверить всё ли установилось корректно. Для этого необходимо открыть командную строку и выполнить команды:

node -v
npm -v

Если всё установилось корректно, то вы увидите версии установленных пакетов.

2. Установка Appium

Нажать, чтобы раскрыть

Установка Appium происходит через npm. Для этого необходимо открыть командную строку и выполнить следующую команду:

npm install -g appium

3. Установка драйвера UiAutomator2 для Appium

Нажать, чтобы раскрыть

Для установки драйвера UiAutomator2 необходимо выполнить следующую команду:

appium driver install uiautomator2

Важно! Если во время ввода команды вы увидите ошибку, подобную этой:

То необходимо выполнить следующую команду в терминале с правами администратора!:

Set-ExecutionPolicy RemoteSigned

И после этого ввести букву Y и нажать Enter.

Далее заново нужно повторить установку драйвера UiAutomator2 по команде:

appium driver install uiautomator2

Если всё прошло успешно, то вы увидите сообщение об успешной установке драйвера.

4. Установка Android Studio

Нажать, чтобы раскрыть

Для установки Android Studio необходимо перейти на официальный сайт разработчика и скачать актуальную версию.

Указать отметку, что вы прочитали и согласны с условиями лицензионного соглашения и нажать на кнопку Download Android Studio for Windows.

Открыть скачанный файл и следовать инструкциям.

После установки нажимаем на кнопку Finish.

Так как была указана отметка Start Android Studio, то после нажатия на кнопку откроется Android Studio. В отобразившемся окне Import Android Studio settings указываем отметку Do not import settings и нажимаем на кнопку OK.

В окне Help improve Android Studio нажимаем на кнопку Don't send.

5. Настройка Android Studio и установка SDK

Нажать, чтобы раскрыть

После открытия Android Studio будет отображено окно Welcome to Android Studio. Нажимаем на кнопку Next.

В окне Install Type выбираем Standard и нажимаем на кнопку Next.

В окне Verify Settings в Current Settings отображено что будет скачано и установлено. Нажимаем на кнопку Next.

В окне License Agreement в блоке android-sdk-license ставим отметку accept. Кликаем на блок intel-android-extra-license и ставим отметку accept и нажимаем на кнопку Finish. Название блока intel-android-extra-license может отличаться в зависимости от вашего пк.

Установка зависимостей и sdk может занять некоторое время.

Важно! Если во время установки вы увидите сообщение об ошибке, подобное этому:

То необходимо включить виртуализацию в BIOS. Для этого необходимо перезагрузить компьютер и во время загрузки нажать на клавишу F2 или F12 (в зависимости от производителя вашего пк). В меню BIOS необходимо найти пункт Virtualization и включить его.

Проверка установки зависимостей и установка SDK Platforms вручную

После установки зависимостей откроется окно Welcome to Android Studio. В котором необходимо кликнуть на выпадающий список More Actions и выбрать пункт SDK Manager.

На вкладке SDK Platforms убедитесь, что установлены все необходимые пакеты. Если какие-то пакеты не установлены, то установите их.

Перейти на вкладку SDK Tools и убедиться, что установлены все необходимые пакеты. Если какие-то пакеты не установлены, то установите их.

6. Добавление переменной ANDROID_HOME в системные переменные

Нажать, чтобы раскрыть

Для того чтобы Appium мог найти SDK Android, необходимо добавить переменную ANDROID_HOME в системные переменные. Для этого необходимо выполнить следующие шаги:

  1. Перейти в Панель управления -> Систем и безопасность -> Система -> Дополнительные параметры системы.( Либо открыть окно Мой компьютер, кликнуть правой кнопкой мыши и выбрать пункт Свойства).
  2. В открывшемся окне перейти на вкладку Дополнительно/ Дополнительные параметры системы и нажать на кнопку Переменные среды.
  3. В разделе Системные переменные/ Переменные среды пользователя нажать на кнопку Создать.
  4. В поле Имя переменной ввести ANDROID_HOME, а в поле Значение переменной ввести путь до папки с SDK Android. Например, C:\Users\%USERNAME%\AppData\Local\Android\Sdk.
  5. Нажать на кнопку ОК.

где %USERNAME% - это ваше имя пользователя.

Действия выше нужно проделать как для системной переменной, так и для переменной пользователя.

Далее необходимо добавить в переменную Path путь до папки platform-tools и tools внутри папки с SDK Android. Для этого необходимо выполнить следующие шаги:

  1. В разделе Системные переменные/ Переменные среды пользователя найти переменную Path и нажать на кнопку Изменить.
  2. Нажать на кнопку Создать.
  3. В поле Имя переменной ввести Path кликнуть на нее два раза, а в пустое поле ввести пути до папок platform-tools и tools внутри папки с SDK Android.

Например,

C:\Users\%USERNAME%\AppData\Local\Android\Sdk\tools
C:\Users\%USERNAME%\AppData\Local\Android\Sdk\tools\bin 
C:\Users\%USERNAME%\AppData\Local\Android\Sdk\platform-tools
C:\Users\%USERNAME%\AppData\Local\Android\Sdk\platform-tools\adb
C:\Users\%USERNAME%\AppData\Local\Android\Sdk\emulator

где %USERNAME% - это ваше имя пользователя.

  1. Нажать на кнопку ОК.

Данные действия нужно проделать как для системной переменной, так и для переменной пользователя.

Mac os

Для того чтобы добавить переменную ANDROID_HOME в Mac OS, необходимо выполнить следующие шаги: открыть терминал и выполнить следующую команду:

open .zshrc

Откроется файл .zshrc в текстовом редакторе. В конец файла добавить следующую строку:

export PATH=$PATH:/usr/local/bin
export ANDROID_HOME="$HOME/Library/Android/sdk"
export ANDROID_SDK_ROOT="$HOME/Library/Android/sdk"
export PATH="$ANDROID_HOME/tools:$PATH"
export PATH="$ANDROID_HOME/platform-tools:$PATH"

source ~/.zshrc

7. Создание виртуального устройства в Android Studio

Нажать, чтобы раскрыть

Открыть Android Studio. Кликнуть на выпадающий список More Actions и выбрать пункт Virtual Device Manager.

В открывшемся окне нажать на кнопку Device Manager необходимо нажать на иконку +.

В окне Choice a device definition выбрать устройство, которое вы хотите эмулировать и нажать на кнопку Next.

На странице System Image необходимо выбрать версию Android, которую вы хотите установить на эмуляторе. Если в строке Realease Name нарисована иконка скачивания, то необходимо нажать на нее и дождаться окончания загрузки.

После скачивания данная версия будет доступна для установки.

В окне Verify Configuration если необходимо можно изменить название устройства и другие параметры. После этого нажать на кнопку Finish.

Запуск виртуального устройства

Для того чтобы запустить виртуальное устройство, необходимо на странице Device Manager в строке с созданным устройством нажать на кнопку Play. Первый раз может отобразиться окно Adb, которое необходимо одобрить.

После этого начнется загрузка виртуального устройства.

После загрузки виртуального устройства можно проверить его отображение в терминале с помощью команды adb devices.

В терминале будет отображен уникальный идентификатор устройства.

8. Установка Java Development Kit (JDK)

Нажать, чтобы раскрыть

Для установки JDK необходимо перейти на официальный сайт разработчика и скачать актуальную версию.

Или же использовать Azul.

Или JDK Java.

Запустить установщик и следовать инструкциям.

Далее необходимо снова перейти в Системные переменные/ Переменные среды пользователя и проверить есть ли добавленная переменная JAVA_HOME. Если ее нет, то добавить ее.

Mac os

Для того чтобы добавить переменную ANDROID_HOME в Mac OS, необходимо выполнить следующие шаги: открыть терминал и выполнить следующую команду:

open .zshrc

Откроется файл .zshrc в текстовом редакторе. В конец файла добавить следующую строку:

export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home"

source ~/.zshrc

Далее необходимо проверить видно ли переменную JAVA_HOME и Java в командной строке. Для этого необходимо выполнить следующие команды:

java -version
$Env:JAVA_HOME

Если переменные установлены корректно, то вы увидите версию установленного JDK и путь до папки с JDK.

9. Установка Appium Inspector

Нажать, чтобы раскрыть

Для установки Appium Inspector необходимо перейти на страницу GitHub проекта и скачать актуальную версию установщика именно для вашей операционной системы.

После скачивания необходимо запустить установщик и следовать инструкциям.

Инструкция по настройке системы на macOS

Нажать, чтобы раскрыть

1. Установка Node.js и npm на macOS

Нажать, чтобы раскрыть

Для начала необходимо проверить установлены ли Node.js и npm на вашем компьютере. Для этого необходимо открыть терминал и выполнить следующие команды:

node -v
npm -v

Если Node.js и npm не установлены, то вы увидите сообщение об ошибке.

Установка Node.js

Для того чтобы установить Node.js и npm необходимо перейти на сайт Node.js и скачать актуальную версию.

После скачивания необходимо запустить установщик и следовать инструкциям.

После установки необходимо проверить всё ли установилось корректно. Для этого необходимо открыть терминал и выполнить команды:

node -v
npm -v

Если всё установилось корректно, то вы увидите версии установленных пакетов.

2. Установка Appium на macOS

Нажать, чтобы раскрыть

Установка Appium происходит через npm. Для этого необходимо открыть терминал и выполнить следующую команду:

npm install -g appium 

или 

sudo npm install -g appium

3. Установка драйвера UiAutomator2 для Appium на macOS

Нажать, чтобы раскрыть

Для установки драйвера UiAutomator2 необходимо выполнить следующую команду:

appium driver install uiautomator2

или

sudo appium driver install uiautomator2

Если всё прошло успешно, то вы увидите сообщение об успешной установке драйвера.

4. Установка Android Studio на macOS

Нажать, чтобы раскрыть

Для установки Android Studio необходимо перейти на официальный сайт разработчика и скачать актуальную версию.

Указать отметку, что вы прочитали и согласны с условиями лицензионного соглашения и нажать на версию в зависимости от вашего процессора.

Открыть скачанный файл и следовать инструкциям.

Добавить Android Studio в папку Applications.

Подождать пока произойдет копирование файлов.

Открыть Finder и перейти в папку Программы. Запустить Android Studio.

Одобрить запуск установщика Android Studio.

В окне Help improve Android Studio нажимаем на кнопку Don't send.

5. Настройка Android Studio и установка SDK на macOS

Нажать, чтобы раскрыть

После открытия Android Studio будет отображено окно Welcome to Android Studio. Нажимаем на кнопку Next.

В окне Install Type выбираем Standard и нажимаем на кнопку Next.

В окне Verify Settings в Current Settings отображено что будет скачано и установлено. Нажимаем на кнопку Next.

В окне License Agreement в блоке android-sdk-license ставим отметку Accept и нажимаем на кнопку Finish. Название блока android-sdk-license может отличаться в зависимости от вашего процессора. А также возможно, что вам придется установить дополнительные компоненты.

Установка зависимостей и sdk может занять некоторое время.

Проверка установки зависимостей и установка SDK Platforms вручную

После установки зависимостей откроется окно Welcome to Android Studio. В котором необходимо кликнуть на выпадающий список More Actions и выбрать пункт SDK Manager.

На вкладке SDK Platforms убедитесь, что установлены все необходимые пакеты. Если какие-то пакеты не установлены, то установите их.

Перейти на вкладку SDK Tools и убедиться, что установлены все необходимые пакеты. Если какие-то пакеты не установлены, то установите их.

6. Добавление переменной ANDROID_HOME в системные переменные на macOS

Нажать, чтобы раскрыть

Для того чтобы Appium мог найти SDK Android, необходимо добавить переменную ANDROID_HOME в системные переменные. Для этого необходимо выполнить следующие шаги:

Для начала нужно проверить есть ли у вас созданный файл .zshrc. Для этого необходимо выполнить следующие команды в терминале:

~/.zshrc

open .zshrc

Если же файл был найден и открылся, то необходимо пропустить шаг с созданием файла и его открытием.

Если файл .zshrc не найден, то необходимо его создать. Для этого необходимо выполнить следующую команду в терминале:

touch ~/.zshrc

После того как файл создан, необходимо его открыть. Необходимо выполнить следующую команду в терминале:

open .zshrc

Откроется файл .zshrc в текстовом редакторе. В конец файла добавить следующую строку:

export PATH=$PATH:/usr/local/bin
export ANDROID_HOME="$HOME/Library/Android/sdk"
export ANDROID_SDK_ROOT="$HOME/Library/Android/sdk"
export PATH="$ANDROID_HOME/tools:$PATH"
export PATH="$ANDROID_HOME/platform-tools:$PATH"

Далее необходимо сохранить файл и закрыть текстовый редактор.

После этого необходимо выполнить следующую команду в терминале:

source ~/.zshrc

Эта команда обновит переменные окружения.

7. Создание виртуального устройства в Android Studio на macOS

Нажать, чтобы раскрыть

Открыть Android Studio. Кликнуть на выпадающий список More Actions и выбрать пункт Virtual Device Manager.

В открывшемся окне нажать на кнопку Device Manager необходимо нажать на иконку +.

В окне Choice a device definition выбрать устройство, которое вы хотите эмулировать и нажать на кнопку Next.

На странице System Image необходимо выбрать версию Android, которую вы хотите установить на эмуляторе. Если в строке Realease Name нарисована иконка скачивания, то необходимо нажать на нее и дождаться окончания загрузки.

После скачивания данная версия будет доступна для установки.

В окне Verify Configuration если необходимо можно изменить название устройства и другие параметры. После этого нажать на кнопку Finish.

Запуск виртуального устройства

Для того чтобы запустить виртуальное устройство, необходимо на странице Device Manager в строке с созданным устройством нажать на кнопку Play.

После этого начнется загрузка виртуального устройства.

После загрузки виртуального устройства можно проверить его отображение в терминале с помощью команды adb devices.

В терминале будет отображен уникальный идентификатор устройства.

8. Установка Java Development Kit (JDK) на macOS

Нажать, чтобы раскрыть

Для установки JDK необходимо перейти на официальный сайт разработчика и скачать актуальную версию.

Или же использовать Azul.

Или JDK Java.

Запустить установщик и следовать инструкциям.

Одобрить установку.

Далее необходимо открыть файл .zshrc в который добавить переменную JAVA_HOME. Для этого необходимо открыть терминал и ввести команду:

open .zshrc

Откроется файл .zshrc в текстовом редакторе. В конец файла добавить следующие строки:

export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home"

Далее необходимо сохранить файл и закрыть текстовый редактор.

После этого необходимо выполнить следующую команду в терминале:

source ~/.zshrc

Эта команда обновит переменные окружения.

Далее необходимо проверить видно ли переменную JAVA_HOME и Java в командной строке. Для этого необходимо выполнить следующие команды:

java -version
echo $JAVA_HOME

Если переменные установлены корректно, то вы увидите версию установленного JDK и путь до папки с JDK.

9. Установка Appium Inspector на macOS

Нажать, чтобы раскрыть

Для установки Appium Inspector необходимо перейти на страницу GitHub проекта и скачать актуальную версию установщика именно для вашей операционной системы.

После скачивания необходимо запустить установщик и следовать инструкциям.

Если во время установки будет отображено сообщение, что не удается открыть приложение, то необходимо открыть Конфиденциальность и безопасность и разрешить запуск приложения.

10. Запуск Appium сервера и Appium Inspector и подключение эмулятору

Нажать, чтобы раскрыть

Запуск Appium сервера

Для запуска Appium необходимо открыть командную строку и выполнить следующую команду:

appium

Необходимо дождаться пока Appium запустится и отобразится сообщение о том, что сервер запущен. Необходимо проверить не отображено ли ошибок при запуске, а также отображены ли драйверы UiAutomator2 которые были установлены ранее.

Важно обратить внимание на следующие строки:

[Appium] You can provide the following URLs in your client code to connect to this server: 
[Appium] http://127.0.0.1:4723/ (only accessible from the same host)

– именно http://127.0.0.1:4723/ является полным «remote url», который используется для создания подключения. Для подключения из Appium Inspector: Remote Host (127.0.0.1); Remote Port (4723); Remote Path (/).

Есть важный нюанс по Remote Path – раньше он по умолчанию был равен /wd/hub, и полный remote url выглядел так http://127.0.0.1:4723/wd/hub. Сейчас поменялась, и не нужно указывать /wd/hub, но если необходимо запускать appium как ранее, то необходимо передать --base-path:

appium --base-path "/wd/hub"

Запуск Appium Inspector

После запуска Appium сервера нужно запустить Appium Inspector. После запуска Appium Inspector необходимо убедиться что убедиться, что параметры Remote Host, Remote Port, Remote Path соответствуют тем, с которыми запущен Appium-сервер

Если запущен Appium сервер с Remote Path как /wd/hub, то нужно указать его в Appium Inspector.

Иногда при подключении к Appium Inspector может возникнуть ошибка, что не удается подключиться и что необходимо подтвердить неавторизованное подключение. Для этого необходимо в Appium Inspector открыть блок Advanced Settings и включить опцию Allow Unauthorized Sertificates.

Подключение Android эмулятора

Важно! Для того чтобы подключить Android эмулятор к Appium Inspector необходимо чтобы appium был запущен и работал. Необходимо запустить эмулятор в Android Studio и дождаться его загрузки. После этого необходимо подключить Appium Inspector к Android эмулятору. Для этого необходимо выполнить следующие шаги: А именно ввести в поле Desired Capabilities следующие минимальные параметры:

{
  "platformName": "Android",
  "appium:automationName": "UiAutomator2"
}

Это можно сделать вручную добавляя каждый параметр по отдельности или же воспользоваться блоком JSON Representation. Через блок JSON Representation можно добавить все параметры сразу, вставив их в поле и нажав иконку с дискетой.

После сохранения параметров они будут размещены в поля Desired Capabilities.

Префикс appium: в названии параметров можно не писать, он добавится при подключении автоматически при условии установленного чекбокса Automatically add necessary Appium vendor prefixes on start.

После добавления параметров необходимо нажать на кнопку Start Session.

После запуска appium inspector в терминале будет отображен лог подключения к эмулятору. И если всё прошло успешно, то в Appium Inspector будет отображен экран эмулятора.

11. Основной функционал Appium Inspector

Нажать, чтобы раскрыть

В Appium Inspector есть несколько основных функций, которые помогают в работе с элементами на экране эмулятора.

Select Elements

Select Elements - это функция, которая позволяет выбрать элемент на экране эмулятора и увидеть его XPath, ID, ClassName и другие параметры. По умолчанию данная функция включена. Необходимо только кликнуть на элемент на экране.

Search for element

Search for element - это функция, которая позволяет искать элемент на экране по его XPath, ID, ClassName и другим параметрам. Для того чтобы проверить есть ли среди элементов на экране нужный элемент, необходимо кликнуть на иконку лупы, выбрать тип локатора и ввести значение. Далее нажать на кнопку Search.

Полный списком поддерживаемых локаторов можно увидеть в официальном README драйвера UiAutomator2

Tap/Swipe by coordinates

Tap/Swipe by coordinates - это функция, которая позволяет тапнуть или свайпнуть по экрану эмулятора по координатам.

Для того чтобы тапнуть по экрану или свайпунть, необходимо кликнуть на иконку с + для активации режима выбора координат, выбрать координаты(навести курсор на нужное место и кликнуть).

Show Element Handles

Show Element Handles - это функция, которая позволяет увидеть все кликабельные элементы на экране.

Для того чтобы увидеть все элементы на экране, необходимо переключить переключатель в положение ON.

Все кликабельные элементы будут подсвечены красным цветом. Если это иконка + то нужно кликнуть и отобразиться несколько параметров элемента на которые можно кликнуть.

12. Подключение реальный девайс на Android для работы с Appium

Нажать, чтобы раскрыть

Подготовка реального устройства к подключению

  1. Перейти в настройки устройства;
  2. Открыть пункт О телефоне;
  3. Нажать на пункт Номер сборки несколько раз, пока не появится сообщение о том, что режим разработчика активирован;
  4. Перейти в настройки разработчика;
  5. Активировать режим разработчика;
  6. Активировать отладку по USB.
  7. Подключить устройство к компьютеру через USB-кабель.
  8. При первом подключении устройства к компьютеру необходимо дать разрешение на подключение к компьютеру, выбрав пункт Всегда разрешать....
  9. После подключения устройства проверить его отображение с помощью команды adb devices.
  10. Если необходимо, можно настроить дополнительные опции, например, включить опцию «Stay Awake» («Не выключать экран»)

Подключение реального устройства к Appium и запуск apk

Для начала необходимо скачать apk файл, который будет тестироваться. Как пример wikipedia.apk Далее необходимо запустить Appium и Appium Inspector. После этого необходимо подключить устройство к компьютеру и дождаться его отображения в терминале с помощью команды adb devices.

В Appium Inspector необходимо добавить параметры для подключения к устройству:

{
  "platformName": "Android",
  "appium:automationName": "UiAutomator2",
  "appium:app": "<YOUR-PATH-TO-PROJECT>/app-alpha-universal-release.apk",
  "appium:appWaitActivity": "org.wikipedia.*"
}

Опция appium:app - это путь до apk файла, который будет тестироваться. Опция appium:appWaitActivity - это активити, которая будет открыта после запуска apk файла. Чаще всего ее не используют, или же используют * если нужно указать любую активити.

После добавления параметров необходимо нажать на кнопку Start Session.

Если одновременно подключено более одного устройства, например – эмулятор и реальный девайс, то надо либо оставить только одно устройство подключенным (закрыв, например, эмулятор), либо дополнительно указать опцию deviceName:

"appium:deviceName": "<YOUR-DEVICE-NAME>"

YOUR-DEVICE-NAME – это имя вашего устройства.

или опцию udid:

"appium:udid": "<YOUR-DEVICE-UDID>"

YOUR-DEVICE-UDID – это уникальный идентификатор вашего устройства, который можно узнать с помощью команды adb devices.

Подсказка к домашнему заданию

Нажать, чтобы раскрыть

Ты увидишь полное решение реализации, если нажмешь на кнопку ниже. Ты уверен, что хочешь это сделать?

Да, я осознаю все риски, и спишу

А может подумаешь еще раз?

Уже думал, хочу списать

А может загуглить самостоятельно?

Не помогло, дай списать

Спишешь, но не скажешь никому?

Так и думал/ла сделать

А вдруг ты сможешь сам?

Может, но не сейчас

Ладно, смотри решение, но не забудь разобраться в нем.

Обязуюсь разобраться после того как спишу

Пример реализации конфигурации, а именно файл config.py:

Пример реализации конфигурации, а именно файл config.py
import os
from dotenv import load_dotenv
from appium.options.android import UiAutomator2Options
import utils


def to_driver_options(context):
    options = UiAutomator2Options()

    if context == 'local_emulator':
        options.set_capability('remote_url', os.getenv('REMOTE_URL')) # адрес удаленного сервера
        options.set_capability('deviceName', os.getenv('DEVICE_NAME')) # имя устройства
        options.set_capability('appWaitActivity', os.getenv('APP_WAIT_ACTIVITY')) # активити, которая будет открыта после запуска apk файла
        #options.set_capability('udid', os.getenv('UDID')) # уникальный идентификатор устройства 
        options.set_capability('app', utils.file.abs_path_from_project(os.getenv('APP'))) # путь до apk файла

    if context == 'local_real_device':
        options.set_capability('remote_url', os.getenv('REMOTE_URL'))
        options.set_capability('deviceName', os.getenv('DEVICE_NAME'))
        options.set_capability('appWaitActivity', os.getenv('APP_WAIT_ACTIVITY'))
        #options.set_capability('udid', os.getenv('UDID'))
        options.set_capability('app', utils.file.path_from_project(os.getenv('APP')))
        

    if context == 'bstack':
        options.set_capability('remote_url', os.getenv('REMOTE_URL'))
        options.set_capability('deviceName', os.getenv('DEVICE_NAME'))
        options.set_capability('platformName', os.getenv('PLATFORM_NAME'))
        options.set_capability('platformVersion', os.getenv('PLATFORM_VERSION'))
        options.set_capability('appWaitActivity', os.getenv('APP_WAIT_ACTIVITY'))
        options.set_capability('app', os.getenv('APP'))
        load_dotenv(dotenv_path=utils.file.path_from_project('.env.credentials')) # загрузка переменных окружения из файла .env.credentials
        options.set_capability(
            'bstack:options', {
                'projectName': 'Wikipedia project',
                'buildName': 'browserstack-build-1',
                'sessionName': 'BStack test',
                'userName': os.getenv('USER_NAME'),
                'accessKey': os.getenv('ACCESS_KEY'),
            },
        )

    return options

Env файлы могут быть реализованы следующим образом:

.env.local_emulator

REMOTE_URL='http://127.0.0.1:4723' # адрес удаленного сервера
DEVICE_NAME='emulator-5554' # имя устройства, его можно узнать с помощью команды 'adb devices'
APP_WAIT_ACTIVITY='org.wikipedia.*' # активити, которая будет открыта после запуска apk файла
APP='./app-alpha-universal-release.apk' # название apk файла

.env.local_real_device

REMOTE_URL='http://127.0.0.1:4723'
DEVICE_NAME='****' # имя реального устройства, его можно узнать с помощью команды 'adb devices'
APP_WAIT_ACTIVITY='org.wikipedia.*'
APP='./app-alpha-universal-release.apk'

.env.bstack

REMOTE_URL='http://hub.browserstack.com/wd/hub' # адрес удаленного сервера BrowserStack
DEVICE_NAME='Google Pixel 3' # имя устройства BrowserStack
PLATFORM_NAME='Android' # платформа Android
PLATFORM_VERSION='9.0' # версия Android
APP_WAIT_ACTIVITY='org.wikipedia.*' # активити, которая будет открыта после запуска apk файла
APP='bs://*********' # ссылка на apk файл в BrowserStack

.env.credentials

USER_NAME='*****' # имя пользователя BrowserStack
ACCESS_KEY='*****' # ключ доступа к аккаунту BrowserStack
Пример файла conftest.py
import pytest
from appium import webdriver
from dotenv import load_dotenv
from selene import browser

import config
from utils import attach


def pytest_addoption(parser):
    parser.addoption(
        "--context",
        default="bstack",
        help="Specify the test context"
    )


def pytest_configure(config):
    context = config.getoption("--context")
    env_file_path = f".env.{context}"

    load_dotenv(dotenv_path=env_file_path)


@pytest.fixture
def context(request):
    return request.config.getoption("--context")


@pytest.fixture(scope='function', autouse=True)
def mobile_management(context):
    options = config.to_driver_options(context=context)

    browser.config.driver = webdriver.Remote(options.get_capability('remote_url'), options=options)
    browser.config.timeout = 10.0

    yield

    attach.add_screenshot()
    attach.add_xml()
    session_id = browser.driver.session_id

    browser.quit()

    if context == 'bstack':
        attach.add_video(session_id)

Пример запуска тестов при реализации описанной выше

pytest # при не указании параметра --context будет запущен тест в контексте bstack, это равноценно команде pytest --context=bstack

pytest --context=local_emulator # запуск теста в контексте local_emulator

pytest --context=local_real_device # запуск теста в контексте local_real_device

pytest --context=bstack # запуск теста в контексте bstack

Содержание
Командная строка
Кодировка UTF-8 в Java
Список полезных книг для автоматизаторов тестирования на языке Java
Список полезных книг для автоматизаторов тестирования на языке Python Структура проекта Github README.md

Java:
1. Вводное занятие. Сразу к практике.
2. Git. GitHub. Погружаемся.
3. Погружаемся в инструментарий и библиотеки
4. Основы Java
5. Продолжаем разрабатывать автотесты. PageObjects
6. JUnit 5
7. Allure Reports
8. Работа с файлами
9. Selenide #1
10. Jenkins. Создаем первую задачу
11. Управляем параметрами в коде и в Jenkins
12. Отправляем уведомления о результатах прохождения автотестов
13. Учимся быстро разрабатывать проекты для тестовых заданий
14. Selenoid
15. Библиотека Owner
16. REST API. Пишем автотесты с Rest assured
17. REST API. Декомпозируем UI тесты. Подключаем отчетность
18. REST API. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Allure TestOps
21. Переезд на собственную инфраструктуру Java

Python:
1. Вводное занятие. Сразу к практике!
2. Погружаемся в инструментарий и библиотеки
3. Git. GitHub. Погружаемся.
4. Основы Python
5. Selene #1
6. Основы Python. Часть II
7. Основы Python. Часть III
8. Page Object
9. Allure Reports
10. Работаем с файлами Python
11. Jenkins. Создаем первую задачу и управляем параметрами Python
12. Телеграм бот. Отправляем уведомления о результатах прохождения тестов
13. Pytest
14. Selenoid
15. Pytest. Часть II
16. Venv, Poetry и управление зависимостями проекта
17. REST API. Часть I. Пишем автотесты с Requests
18. REST API. Часть II. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Мобильная автоматизация #2. Разрабатываем автотесты с эмулятором Android устройства
21. Allure TestOps
22. Переезд на собственную инфраструктуру Python

Clone this wiki locally