Сесії Appium з використанням Python
Вітаю, я Вадим. Працюю QA Engineer, а ще веду YouTube-блог та канал в Telegram. Сьогодні хочу вам розповісти про сесії Appium. Це основна одиниця взаємодії між клієнтом тестування (наприклад, кодом, що написаний на Python або іншій мові програмування) і сервером Appium, який управляє автоматизацією мобільних або навіть десктопних застосунків. Сесія використовується для виконання різноманітних тестових команд на цільовому пристрої або емуляторі/симуляторі.
Ідентифікатор сесії є ключем, що зв’язує ваш тестовий скрипт із конкретною сесією автоматизації на сервері Appium. Він дозволяє виконувати послідовні команди в рамках одного тестового середовища. Коли ви запускаєте сесію Appium, отримуєте унікальний ідентифікатор, який використовується для управління цією сесією: від відкриття застосунку до виконання тестів і закінчення сесії.
Для налаштування сесії використовуються спеціальні параметри — можливості, що описують, яким чином та на якому пристрої буде виконуватися тест. Це може бути емулятор iOS, реальний Android-пристрій або будь-яке інше середовище. Можливості визначають, наприклад, версію ОС, назву пристрою, шлях до застосунку для тестування тощо. Важливість точного вказання можливостей полягає в забезпеченні правильного запуску тестів на бажаній платформі і пристрої.
Appium функціонує на архітектурі клієнт-сервер, де команди передаються на сервер через HTTP-запити. У цій моделі, кожен запит включає ідентифікатор сесії, що дозволяє серверу Appium розпізнавати та послідовно обробляти команди в рамках одного тесту. Це забезпечує логічний потік автоматизації: від виявлення елементів до взаємодії з ними, підтримуючи таким чином стабільність і послідовність тестувального процесу.
Вимоги до налаштування сесії в Appium
Сервер Appium. Необхідно мати активний сервер Appium, адже клієнт Appium на Python не може запустити сервер чи налаштувати драйвери автоматично. Залежно від потреб, застосунок має бути або уже встановлений на мобільному пристрої, або доступний на тій же машині, де запущено сервер Appium. У випадку останнього, Appium зможе сам встановити та запустити застосунок.
Підключення пристрою. Перед тестуванням слід переконатися, що бажаний мобільний пристрій підключений і готовий до використання. Це відноситься і до реальних девайсів, і емуляторів або симуляторів. Найпростіше працювати з емуляторами чи симуляторами через їхню доступність та простоту налаштування, але реальні пристрої забезпечують більш точне тестування у реальних умовах.
Здатності (capabilities) Appium. Налаштування здатностей (capabilities) Appium є критично важливими для інформування сервера про параметри застосунку та пристрою. Здатності включають деталі, які перевищують звичайні параметри, такі як browserName
чи browserVersion
, використовувані в Selenium, та включають специфіку мобільних застосунків та обладнання.
Ключові вимоги до мобільного застосунку для тестування в Appium
Формати файлів застосунку
Android: Використовуйте .apk-формат для всіх Android-девайсів.
iOS: Для симуляторів iOS потрібен .app або .app.zip-файл, в той час, як для фізичних пристроїв використовується .ipa.
Тип збірки
Застосунок має бути у відлагоджувальній або розробницькій версії. Релізні збірки не підходять для тестування на віртуальних пристроях, оскільки їх часто блокує система безпеки.
Розташування застосунку
Застосунок має бути доступний на машині, де запущено Appium, або через мережу (наприклад, інтернет). Якщо ви використовуєте хмарний сервіс для тестування, зазвичай потрібно завантажити застосунок заздалегідь і надати URL для доступу.
Capabilities для сесії Appium
platformName
Вказує платформу для тестування: iOS або Android. Це ключова властивість, що інформує Appium, на якій системі буде проводитися автоматизація.
platformVersion
Означає версію операційної системи мобільного пристрою, наприклад 17.0 для iOS або 12 для Android. Ця здатність забезпечує точне зіставлення з доступними пристроями або емуляторами.
deviceName
Ідентифікує конкретний пристрій або емулятор, який Appium має використовувати для тестів, наприклад, iPhone 15 або Pixel 5.
automationName
Назва драйвера, який буде використовуватися для проведення тестів, залежно від платформи: XCUITest для iOS або UiAutomator2 для Android.
app
або browserName
app
: шлях до файлу застосунку (наприклад, .apk або .app.zip) для нативних тестів.browserName
: використовується для вебтестування, із вказівкою на тип браузера, як-от Safari або Chrome.
Створення сесії iOS з Appium
Для автоматизації iOS-додатків з Appium, перш за все, вам потрібно встановити та налаштувати залежності та клієнт Appium. Імпортуйте webdriver з бібліотеки Appium, як показано нижче:
from appium import webdriver
Конфігурація шляху до застосунку
Для вказівки шляху до вашого тестового застосунку, використовуйте модуль os.path
:
from os import path CUR_DIR = path.dirname(path.abspath(__file__)) APP_PATH = path.join(CUR_DIR, 'YourApp.app.zip')
Як альтернативу, ви можете використовувати URL, якщо ваш застосунок зберігається в інтернеті:
APP_PATH = "https:/ /example.com/path/to/YourApp.app.zip"
Налаштування сервера Appium
Визначте URL до сервера Appium, який зазвичай слухає на порту 4723:
APPIUM_SERVER_URL = 'http:/ /localhost:4723'
Специфікація можливостей
Можливості в Appium визначають параметри запуску тестового застосунку та обраного середовища. Використовуйте об’єкт AppiumOptions для групування цих налаштувань:
from appium.options.common import AppiumOptions capabilities = { "platformName": "iOS", "appium:options": { "platformVersion": "17.4", "deviceName": "iPhone 15 Pro Max", "automationName": "XCUITest", "app": APP_PATH } } options = AppiumOptions().load_capabilities(capabilities)
Ініціалізація сесії
Запустіть сесію Appium, вказавши обрані можливості та адресу сервера:driver = webdriver.Remote( command_executor=APPIUM_SERVER_URL, options=options )
Завершення сесії
Після завершення тестів завжди закривайте сесію для звільнення ресурсів:driver.quit()
Цей підхід забезпечує чисте та ефективне управління сесіями автоматизації на iOS, допомагаючи уникнути «зомбі-сесій», які можуть споживати системні ресурси.
Створення Android-сесії з Appium
Почнемо з налаштування файлу sessions_android.py
, адаптуючи наш попередній код для iOS.
Зміна шляху до застосунку
Для Android-сесії, переконайтесь, що шлях до застосунку вказує на Android APK-файл:
from os import path CUR_DIR = path.dirname(path.abspath(__file__)) APP = path.join(CUR_DIR, 'TheApp.apk')
Оновлення можливостей
Адаптуйте можливості для Android, включаючи версію платформи, назву пристрою та автоматизаційний драйвер:
CAPS = { "platformName": "Android", "appium:options": { "platformVersion": "14.0", # Версія Android "deviceName": "Android Emulator", # Назва емулятора або реального пристрою "automationName": "UiAutomator2", # Драйвер автоматизації "app": APP # Шлях до .apk файлу } }
Примітка: platformVersion
не є обов’язковою для Android; якщо відсутня, Appium вибере доступний пристрій за замовчуванням.
Запуск і зупинка сесії
Запустіть сервер Appium і переконайтесь, що Android-емулятор або реальний пристрій вже працює. Скрипт ініціалізує сесію, запускає застосунок на вказаному пристрої та закриває сесію після тестування:
from appium import webdriver from appium.options.common import AppiumOptions
options = AppiumOptions().load_capabilities(CAPS) driver = webdriver.Remote(command_executor='http://localhost:4723', options=options) driver.quit()
Так ми вказуємо Appium розпочати сесію для конкретної платформи та пристрою, а також як коректно завершити сесію після завершення автоматизації.
Стикались з сесіями Appium? Розкажіть про свій досвід у коментарях.
6 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів