[Перевод] Руководство APPIUM по тестированию мобильных приложений для Android и iOS

d59143bce5ccd92fbf3a803e3ef465c8.png

Что такое Appium?

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

Он не отягощен зависимостью от операционной системы мобильного устройства — у Appium есть фреймворк или оболочка, которые переводят команды Selenium Webdriver в команды UIAutomation (iOS) или UIAutomator (Android) в зависимости от типа устройства, а не любого типа ОС.

Appium поддерживает все языки с клиентскими библиотеками Selenium, такие как: Java, Objective-C, JavaScript с node.js, PHP, Ruby, Python, C# и т. д.

В этой статье мы поговорим о таких моментах:

  • Как Appium работает?

  • Необходимые условия для использования Appium

  • Установка Appium Desktop

  • Appium Inspector

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

  • Тест-кейс Appium для нативного Android-приложения (калькулятор)

  • Ограничения использования Appium 

  • Распространенные ошибки и шаги по устранению неполадок в Appium

Как работает Appium?

  • Appium — это «HTTP-сервер», написанный с использованием платформы Node.js и управляющий сессиями iOS и Android с использованием проводного протокола Webdriver JSON. Следовательно, перед инициализацией Appium Server в системе необходимо предварительно установить Node.js.

  • Когда Appium скачан и установлен, на компьютере настраивается сервер с REST API.

  • Он получает запрос на подключение и команду от клиента и выполняет эту команду на мобильных устройствах (Android/iOS).

  • Он отвечает ответами HTTP. Опять же, чтобы выполнить этот запрос, он использует платформы автоматизации мобильного тестирования для управления пользовательским интерфейсом приложений. Фреймворк вроде:  

    — Apple Instruments для iOS (Instruments доступен только в Xcode 3.0 или более поздних версиях с OS X v10.5 и более поздних версиях).

    — Google UIAutomator для Android API уровня 16 или выше.

    — Selendroid для Android API уровня 15 или ниже.

Необходимое условие для использования APPIUM

  1. Установить ANDROID SDK (Studio)

  2. Установить JDK (Java Development Kit)

  3. Установить Eclipse

  4. Установить TestNg для Eclipse

  5. Установить JAR Selenium Server

  6. Клиентская библиотека Appium

  7. Информация о приложении APK в Google Play

  8. js (не требуется — всякий раз, когда сервер Appium установлен, он по умолчанию поставляется с «Node.exe» и NPM. Он включен в текущую версию Appium)

  9. Установить Appium Desktop

Установка Appium Desktop:

Appium Studio — это приложение с GUI с открытым исходным кодом для установки Appium Server. Он поставляется в комплекте со всеми зависимостями для установки и использования Appium Server. Включает в себя Inspector для получения основной информации о приложениях. А также поставляется с Recorder для создания шаблонного кода для автоматизации мобильных приложений.

Шаг 1) Перейдите на http://appium.io/ и загрузите Appium.

Шаг 2) Для Windows выберите исполняемый файл и загрузите его. Размер файла составляет около 162 МБ. Загрузка займет какое-то время в зависимости от скорости интернета.

Шаг 3) Нажмите на скачанный файл exe.

Шаг 4) На компьютере с Windows устанавливать Appium нет необходимости — он запускается прямо из exe. После нажатия на exe в течение нескольких минут увидите следующее.

Если вы пользуетесь Mac, необходимо установить dmg.

Шаг 5) Далее вы увидите окно запуска сервера с предзаполненными параметрами хоста и порта по умолчанию, которые можно изменить. На кнопке старта упоминается используемая версия Appium.

Шаг 6) При нажатии на кнопку запуска сервера на указанном хосте и порту запускается новый сервер. Отобразится журнал работы сервера. 

Шаг 7) Нажмите на «New Session Window».

Шаг 8) Можно ввести необходимые данные и начать сеанс.

APPIUM Inspector

Подобно инструменту записи и воспроизведения Selenium IDE, Appium содержит инструмента Inspector для тех же целей. Он записывает и воспроизводит поведение нативного приложения, проверяя DOM, и генерирует тестовые сценарии на любом языке. Однако в настоящее время поддержка Appium Inspector для Microsoft Windows отсутствует. В Windows он запускает Appium Server, но не может проверить элементы. Однако в качестве инструмента для проверки элементов можно использовать UIAutomator viewer.

Шаги для начала работы с Appium Inspector на Mac:

Шаг 1) Загрузите и запустите сервер Appium с IP-адресом по умолчанию 0.0.0.0 и портом 4725.

  1. Выберите исходный файл или файлы .app из локального для тестирования.

  2. Поставьте галочку в поле «App Path», чтобы активировать кнопку выбора.

Шаг 2) Теперь нажмите кнопку «Choose», чтобы получить возможность просмотреть и выбрать тестовый файл с локального диска.

Шаг 3) Запустите симулятор на Mac.

Шаг 4) Нажмите кнопку «Launch» в правом верхнем углу, которая активирует значок синего цвета. Снова нажмите на значок синего цвета, он откроет инспектор Appium и симулятор с предварительно выбранным приложением.

Шаг 5). Запуск Appium Inspector покажет иерархию элементов в виде столбцов. Кроме того, пользователь может применять действия с помощью таких кнопок, как Tap, Swipe и т. д.

Шаг 6) Нажмите кнопку «Stop», чтобы остановить запись.

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

Шаг 1) Установите Android SDK в свою систему.

Перейдите в Панель управления [Control panel] >> Система и безопасность [System and Security] >> Система [System] и на левой панели нажмите «Продвинутые настройки системы» [Advanced System Settings]. Во всплывающем окне «Свойства системы» [System Properties] перейдите на вкладку «Дополнительно» [Advanced], а затем нажмите кнопку «Переменные среды» [Environment Variables].

Шаг 2) Теперь во всплывающем окне «Переменные среды» [Environment variables] дважды щелкните «Путь» [Path] и установите переменную ANDROID_HOME, которая указывает на ваш каталог SDK. В пути добавьте весь путь к папке SDK.

например –

C:\User\ABC\Desktop\adt-bundled-windows-x86_64-20140321\sdk

Шаг 3) Запустите эмулятор Android или подключите любое устройство Android к вашей системе (убедитесь, что на устройстве Android включена опция отладки Android. Чтобы проверить параметр отладки, перейдите в «Настройки устройства» >> «Параметры разработчика» >> Установите флажок «Параметры отладки» [Debugging Option]).

Шаг 4) Откройте командную строку и перейдите в каталог \platform-tools\ вашего Android SDK (например, D:\adt-bundle-windows-x86_64–20130514\sdk\platform-tools).

Шаг 5) Запустите команду adb devices. Подключенное устройство можно увидеть в списке в окне командной строки. (В CMD наберите >adb devices — эта команда выведет список подключенных экземпляров эмулятора. Например: adb –s emulator-5554 install )

Шаг 6) Запустите команду adb start-server. Она запустит сервер ADB, который будет использоваться Appium для отправки команд на ваше Android-устройство.

Шаг 7) Теперь перейдите в каталог Appium в системе и запустите Appium.exe.

Шаг 8) Не меняйте IP-адрес или номер порта, нажмите кнопку запуска. Ваша консоль Appium начинается с адреса 127.0.0.1:4723, как показано ниже.

Шаг 9) Нажмите кнопку «Пуск», сервер Appium запустится в вашей системе.

Тестовый пример APPIUM для нативного приложения Android (калькулятор)

Шаг 1) Загрузите плагин ADT eclipse или загрузите ADT в комплекте отдельно здесь.

Шаг 2) Откройте Eclipse и создайте новый проект >> Пакет >> Класс (a new Project >> Package >> Class).

Шаг 3) Импортируйте библиотеку Selenium и Testng в этот новый проект.

Шаг 4) Теперь создайте небольшую тестовую программу для «Calculator.app», чтобы суммировать два числа.

package src_Appium;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
//import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.*;


public class Calculator {
WebDriver driver;

@BeforeClass
public void setUp() throws MalformedURLException{
	//Set up desired capabilities and pass the Android app-activity and app-package to Appium
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability("BROWSER_NAME", "Android");
	capabilities.setCapability("VERSION", "4.4.2"); 
	capabilities.setCapability("deviceName","Emulator");
	capabilities.setCapability("platformName","Android");
 
   
   capabilities.setCapability("appPackage", "com.android.calculator2");
// This package name of your app (you can get it from apk info app)
	capabilities.setCapability("appActivity","com.android.calculator2.Calculator"); // This is Launcher activity of your app (you can get it from apk info app)
//Create RemoteWebDriver instance and connect to the Appium server
 //It will launch the Calculator App in Android Device using the configurations specified in Desired Capabilities
   driver = new RemoteWebDriver(new URL("https://127.0.0.1:4723/wd/hub"), capabilities);
}

@Test
public void testCal() throws Exception {
   //locate the Text on the calculator by using By.name()
   WebElement two=driver.findElement(By.name("2"));
   two.click();
   WebElement plus=driver.findElement(By.name("+"));
   plus.click();
   WebElement four=driver.findElement(By.name("4"));
   four.click();
   WebElement equalTo=driver.findElement(By.name("="));
   equalTo.click();
   //locate the edit box of the calculator by using By.tagName()
   WebElement results=driver.findElement(By.tagName("EditText"));
	//Check the calculated value on the edit box
assert results.getText().equals("6"):"Actual value is : "+results.getText()+" did not match with expected value: 6";

}

@AfterClass
public void teardown(){
	//close the app
	driver.quit();
}
}

Сервер Appium и эмулятор Android из «AVD Manager» и нажмите «Run» >> TestNG. Вышеупомянутая программа запустит Calculator.app на выбранном эмуляторе, и результат отобразится в консоли Eclipse с использованием среды TestNG.

Ограничения использования APPIUM

  1. Appium не поддерживает тестирование версии Android ниже 4.2.

  2. Ограниченная поддержка тестирования гибридных приложений, например: невозможно протестировать действие переключения приложения с веб-приложения на нативное и наоборот.

  3. Нет поддержки запуска Appium Inspector в Microsoft Windows.

Распространенные ошибки и шаги по устранению неполадок в Appium

Ошибка

Действия по устранению ошибок

Ошибка: Требуются следующие параметры, но они не были даны: имя устройства, имя платформы

Добавьте нужные параметры: имя устройства, имя платформы в сценарии APPIUM. например: capabilities.setCapability("deviceName","Emulator"); capabilities.setCapability("имя_платформы","Android");

Ошибка: Не удалось найти adb. Задайте для переменной среды ANDROID_HOME путь к корневому каталогу Android SDK.

Вероятно, необходимо указать путь к корневому каталогу SDK в системных настройках [Environment Variables] в поле «Path».

error: org.openqa.selenium.SessionNotCreatedException: не удалось создать новый сеанс.

Необходимо указать правильный путь к приложению и перезапустить сервер Appium.

Как найти элемент DOM или XPath в мобильном приложении?

Используйте UIAutomatorviewer, чтобы найти элемент DOM для приложения Android.

Приглашаем всех желающих на открытое занятие «Install Selenoid cluster». На этом открытом уроке рассмотрим разворачивание Selenoid кластера с использованием Docker и разберем, как организовать балансировку нагрузки между Selenoid инстансами. Регистрация — по ссылке.

© Habrahabr.ru