← Назад ко всем вопросам

Как устроен Appium: client–server, драйверы, что такое Appium Server и как он общается с устройством?

1️⃣ Как кратко ответить

Appium — это инструмент для автоматизации мобильных приложений, работающий по архитектуре клиент-сервер. Appium Server принимает команды от клиента, которые затем передаются на устройство через соответствующие драйверы. Драйверы взаимодействуют с нативными API платформы (iOS, Android), чтобы выполнять действия на устройстве.

2️⃣ Подробное объяснение темы

Appium — это популярный инструмент для автоматизации тестирования мобильных приложений. Он поддерживает приложения на платформах iOS и Android и позволяет писать тесты на различных языках программирования, таких как Java, Python, JavaScript и другие. Основная архитектура Appium основана на модели клиент-сервер, что делает его гибким и расширяемым.

Архитектура клиент-сервер

  1. Appium Client: Это библиотека, которую разработчики интегрируют в свои тесты. Клиент отправляет HTTP-запросы к Appium Server. Эти запросы содержат команды, которые необходимо выполнить на мобильном устройстве, такие как нажатие кнопки или ввод текста.

  2. Appium Server: Это центральный компонент, который принимает команды от клиента и управляет их выполнением. Сервер написан на Node.js и может быть запущен на любой машине, которая имеет доступ к тестируемому устройству. Он обрабатывает входящие HTTP-запросы и передает их соответствующему драйверу.

Драйверы

Драйверы в Appium — это компоненты, которые непосредственно взаимодействуют с мобильными устройствами. Они переводят команды, полученные от Appium Server, в действия, которые могут быть выполнены на устройстве. Существуют разные драйверы для разных платформ:

  • XCUITest Driver: Используется для автоматизации iOS-приложений. Он взаимодействует с XCUITest framework от Apple.
  • UIAutomator2 Driver: Используется для автоматизации Android-приложений. Он взаимодействует с UIAutomator framework от Google.
  • Espresso Driver: Также используется для Android и взаимодействует с Espresso framework.

Appium Server и взаимодействие с устройством

Appium Server выполняет роль посредника между тестами и устройством. Процесс взаимодействия выглядит следующим образом:

  1. Запуск Appium Server: Сервер запускается и начинает слушать входящие HTTP-запросы от клиента.

  2. Отправка команды клиентом: Клиент отправляет HTTP-запрос с командой, например, "нажать кнопку" или "ввести текст".

  3. Обработка команды сервером: Appium Server принимает запрос и определяет, какой драйвер должен обработать команду в зависимости от типа устройства и платформы.

  4. Выполнение команды драйвером: Драйвер переводит команду в действия, которые могут быть выполнены на устройстве, используя нативные API платформы.

  5. Возврат результата: После выполнения команды драйвер возвращает результат обратно на сервер, который затем отправляет его клиенту.

Пример кода

Ниже приведен пример простого теста на Java с использованием Appium:

import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;
​
public class AppiumTest {
    public static void main(String[] args) throws Exception {
        // Установка DesiredCapabilities для Android устройства
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("platformName", "Android");
        caps.setCapability("deviceName", "MyDevice");
        caps.setCapability("appPackage", "com.example");
        caps.setCapability("appActivity", "com.example.MainActivity");
​
        // Создание URL для подключения к Appium Server
        URL url = new URL("http://localhost:4723/wd/hub");
​
        // Инициализация AndroidDriver для взаимодействия с устройством
        AndroidDriver<MobileElement> driver = new AndroidDriver<>(url, caps);
​
        // Пример команды: поиск элемента и выполнение клика
        MobileElement element = driver.findElementById("com.example:id/button");
        element.click();
​
        // Завершение сессии
        driver.quit();
    }
}
  • DesiredCapabilities: Устанавливает параметры для подключения к устройству, такие как платформа, имя устройства и информация о приложении.
  • URL: Указывает на Appium Server, который будет обрабатывать команды.
  • AndroidDriver: Используется для отправки команд на Android-устройство.
  • findElementById: Находит элемент на экране по его идентификатору.
  • click: Выполняет клик по найденному элементу.
  • quit: Завершает сессию и освобождает ресурсы.

Тема: Мобильная автоматизация
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки