О драйверах в автоматизации мобильных приложений

Для автоматизации приложения для Android я использую AppiumDriver.

 AppiumDriver driver = new AppiumDriver(new URL("http://localhost:5555/wd/hub"), capabilities);

Я нашел в Интернете с помощью RemoteWebDriver

 RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:5555/wd/hub"), capabilities);

Есть ли необходимость в использовании разных драйверов. Если да, то какой драйвер мне нужно использовать для автоматизации приложения iOS?


person Venkatesh G    schedule 25.08.2016    source источник


Ответы (1)


Существует несколько вариантов того, какой драйвер использовать, и разница заключается в том, сколько специфичных для платформы функций вы хотите иметь.

Для Android наиболее подходящим драйвером будет AndroidDriver. AndroidDriver расширяет AppiumDriver (тот, который вы используете прямо сейчас), а AppiumDriver расширяет RemoteWebDriver. Другими словами, RemoteWebDriver имеет наименьшее количество функций, а переход на один уровень вперед с помощью драйвера дает больше возможностей.

AndroidDriver Java-клиента: http://appium.github.io/java-client/io/appium/java_client/android/AndroidDriver.html

Наследование AndroidDriver, как показано на странице документации API:

java.lang.Object
  org.openqa.selenium.remote.RemoteWebDriver
    io.appium.java_client.AppiumDriver<T>
      io.appium.java_client.android.AndroidDriver<T>

Обратите внимание, что AppiumDriver и AndroidDriver включают ‹T›, что позволяет вам выбрать, какой тип MobileElements вы используете. Чтобы получить доступ ко всем специфичным для Android функциям драйвера, вы можете определить ‹T› как ‹AndroidElement›: http://appium.github.io/java-client/io/appium/java_client/android/AndroidElement.html

Наследование AndroidElement:

java.lang.Object
  org.openqa.selenium.remote.RemoteWebElement
    io.appium.java_client.MobileElement
      io.appium.java_client.android.AndroidElement

iOS имеет аналогичный IOSDriver: http://appium.github.io/java-client/io/appium/java_client/ios/IOSDriver.html С наследованием:

java.lang.Object
  org.openqa.selenium.remote.RemoteWebDriver
    io.appium.java_client.AppiumDriver<T>
      io.appium.java_client.ios.IOSDriver<T>

Во многих случаях достаточно просто использовать AppiumDriver вместе с ‹WebElement› (используется по умолчанию) или ‹MobileElement›.

person Domestus    schedule 25.08.2016
comment
Можем ли мы использовать AppiumDriver без ‹WebElement› или ‹MobileElement› - person Venkatesh G; 26.08.2016
comment
Некоторые типы элементов всегда используются. Если вы не определите его, WebElement будет использоваться по умолчанию. Вы можете прекрасно использовать WebElements в автоматизации приложений для Android/iOS, но с меньшим количеством функций для управления элементами. - person Domestus; 26.08.2016