Pull to refresh

Перевод книги Appium Essentials. Глава 5

Reading time 15 min
Views 10K
Привет. Продолжаем перевод книги Appium Essentials и изучение мобильной автоматизации. Что уже пройдено:


В этой главе мы, переходим к автоматизации приложений:

  • Автоматизация нативных приложений
  • Автоматизация гибридных приложений
  • Работа с веб-приложениями и нативными браузерами
  • Работа с веб-приложениями и Safari

Впереди много кода. Поехали!



Перед стартом


Перед запуском Appium, давайте убедимся, что весь необходимый софт установлен:

Требования для Android:

  • Java (версии 7 и выше)
  • Android SDK API (версии 17 и выше)
  • Эмулятор
  • Eclipse [ну или Idea]
  • TestNG
  • Appium-сервер
  • Клиентская библиотека Appium (Java)
  • Selenium Server и java-библиотека WebDriver
  • APK тестируемого приложения

Требования для iOS:

  • Mac OS 10.7 и выше
  • Xcode (версии 4.6.3 и выше; рекомендуется 5.1)
  • Симулятор
  • На симуляторе стоит Safari
  • Java версии 7
  • Eclipse [или Idea]
  • TestNG
  • Appium-сервер
  • Клиентская библиотека Appium (Java)
  • Selenium Server и java-библиотека WebDriver

Работая с Appium, необходимо установить desired capabilities и инициировать Android/iOS драйвер.



Необходимые desired capabilities для Android и запуск Android драйвера


Есть два способа задать desired capabilities: через Appium GUI и, инициировав объект desired capabilities. Объект desired capabilities более предпочтителен. Рассмотрим оба варианта: Ниже настройки Android в Appium GUI для нативных и гибридных приложений:



Как настроить:

  • Откройте в Appium GUI настройки Android.
  • Укажите путь до тестируемого приложения.
  • Выберите пакет из списка.
  • Выберите из списка активити для запуска.

    Примечание от автора
    Если приложение уже установлено на виртуальное устройство, шаги 2-4 делать не нужно. Нужно передать на эмулятор информацию об APK для дальнейшей работы. Как это сделать:
    1. Запустите эмулятор
    2. Откройте командную строку [на компьютере]
    3. Напишите
      adb -e install <путь до apk>
    4. Нажмите Enter
    5. Вы должны увидеть сообщение об успешной установке

  • Включите Launch AVD и выберите созданный эмулятор из списка [предполагается, что эмулятор вы уже создали].
  • Выберите из списка PlatformVersion.
  • Включите Device Name и напишите «Android emulator».
  • Запустите Appium-сервер.

Теперь про настройки Android в Appium GUI для веб-приложений:



Как настраивать:

  1. Откройте настройки Android.
  2. Включите Launch AVD и выберите созданный эмулятор из списка [предполагается, что эмулятор вы уже создали].
  3. Выберите из списка PlatformVersion.
  4. Включите Use Browser и выберите браузер из списка.
  5. Включите Device Name и напишите «Android emulator».
  6. Запустите Appium-сервер.

Теперь о втором способе формирования DC.

Desired capabilities для нативных и гибридных приложений


В первой главе мы уже обсудили, какие бывают desired capabilities и зачем они нужны, так что здесь мы сразу погрузимся в код [наканецта!!1!]. Прежде всего, нужно импортировать пакеты:

import java.io.File;
import org.openqa.selenium.remote.DesiredCapabilities; 
import io.appium.java_client.remote.MobileCapabilityType;

Затем, создадим desired capabilities (для нативных и гибридных):

DesiredCapabilities caps = new DesiredCapabilities();//создаем объект
File app=new File("path of the apk");//создаем объект File, чтобы определить путь до apk
caps.setCapability(MobileCapabilityType.APP,app);//требуется, если приложение еще НЕ установлено на эмулятор.
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");//указываем версию Android
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");//Имя OS
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");//Сообщаем, что будет использоваться эмулятор
caps.setCapability("avd","Name of the AVD to launch");//Указываем, какой конкретно эмулятор хотим запустить
caps.setCapability(MobileCapabilityType.APP_PACKAGE, "package name of your app (you can get it from apk info app)");//определяем package для запуска
caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "Launch activity of your app (you can get it from apk info app)");//activity для запуска

Desired capabilities для веб-приложений


В веб-приложения на Android, некоторые опции не нужны. Например APP, APP PACKAGE и APP ACTIVITY, потому что мы запускаем браузер.

Для начала, необходимо импортировать пакеты:

import org.openqa.selenium.remote.DesiredCapabilities; 
import io.appium.java_client.remote.MobileCapabilityType;

Затем, создадим desired capabilities (для веб):

DesiredCapabilities caps = new DesiredCapabilities();//создаем объект
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");//указываем версию Android
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");//Имя OS
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");//Сообщаем, что будет использоваться эмулятор
caps.setCapability("avd","Name of the AVD to launch");//Указываем, какой конкретно эмулятор хотим запустить
caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser"); //для запуска браузера

По части desired capabilities мы все сделали. Теперь нужно инициировать драйвер Android и подключить его к Appium-серверу.

Снова нужно импортировать пакеты:

import io.appium.java_client.android.AndroidDriver;
import java.net.URL;

Затем, инициализируем Android драйвер:

AndroidDriver driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); //caps был создан выше

Эта строка запустит приложение на эмуляторе, используя те настройки, которые были заданы в desired capabilities.

Ну а теперь можно создать заготовку для теста, используя TestNG:

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TestAppIication {
  AndroidDriver driver;

  @BeforeClass
  public void setUp() throws MalformedURLException{
  //Определяем desired capabilities
    DesiredCapabilities caps = new DesiredCapabilities();
    File app=new File("path of the apk");
    caps.setCapability(MobileCapabilityType.APP,app);
    caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
    caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");
    caps.setCapability("avd","Name of the AVD to launch");
    caps.setCapability(MobileCapabilityType.APP_PACKAGE, "package name of your app (you can get it from apk info app)");
    caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "Launch activity of your app (you can get it from apk info app)");
    caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser");// при работе с веб-приложением
    driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
    driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
  }
  @Test
  public void testExample(){
  //здесь будет сам тест
  }
  @AfterClass
  public void tearDown(){
    driver.closeApp();//CloseApp() функция используется для закрытия нативного или гибридного приложения, а quit() и close() - для веба
  }
}



Необходимые desired capabilities для iOS и запуск iOS драйвера


Также, как и на Android, задать desired capabilities можно двумя путями.

Настройки для нативных и гибридных приложений:



  1. Откройте настройки iOS
  2. Укажите путь до тестируемого приложения
  3. Включите Force Device и выберите симулятор из списка
  4. Выберите из списка Platform Version (или можете написать сами, например 8.1)
  5. Запустите Appium-сервер

Настройки для веб-приложений:



  1. Откройте настройки iOS
  2. Выберите «Use Mobile Safari»
  3. Включите Force Device и выберите симулятор из списка
  4. Выберите из списка Platform Version (или можете написать сами, например 8.1)
  5. Запустите Appium-сервер

Desired capabilities для нативных и гибридных приложений


Какие бывают DC и зачем, мы обсудили в главе 1, так что перейдем сразу к коду. Сперва, импорт пакетов:

import java.io.File;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.remote.MobileCapabilityType;

Затем, создадим desired capabilities (для нативных и гибридных):

DesiredCapabilities caps = new DesiredCapabilities();//создаем объект
File app=new File("path of the app");//создаем объект File, чтобы определить путь до приложения
caps.setCapability(MobileCapabilityType.APP,app);//указываем путь до приложения
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");//Версия iOS
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");//Имя OS
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5");//Укажите корректное имя эмулятора или Appium сгенерирует исключение

Desired capabilities для веб-приложений


Импорт пакетов:

import java.io.File;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.remote.MobileCapabilityType;

Теперь установим desired capacities для веб-приложения:

DesiredCapabilities caps = new DesiredCapabilities();//создаем объект
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");//Версия iOS
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");//Имя OS
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5");//Укажите корректное имя эмулятора или Appium сгенерирует исключение
caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari"); //Чтобы запустить Safari

Осталось инициализировать драйвер iOS.

Импорт:

import io.appium.java_client.ios.IOSDriver;
import java.net.URL;

Инициализация:

IOSDriver driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"),caps);

Теперь можно писать тест, используя TestNG:

import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TestAppIication {
  IOSDriver driver;

  @BeforeClass
  public void setUp() throws MalformedURLException{
  //Задаем desired capabilities
    DesiredCapabilities caps = new DesiredCapabilities();
    File app=new File("path of the .app");
    caps.setCapability(MobileCapabilityType.APP,app);
    caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
    caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
    caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5");
    caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");// при работе с веб-приложением
    driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
    driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
  }
  @Test
    public void testExample(){
    //здесь будет сам тест
  }
  @AfterClass
  public void tearDown(){
    driver.closeApp();//для нативных или гибридных приложений
    //driver.quit(); //для веб-приложений
  }
}



Автоматизация нативных приложений


Android


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



  1. Обновите desired capabilities в методе setup(), чтобы запустить калькулятор:

    caps.setCapability("avd","AVD_Nexus_4");// Mention the created AVD name
    caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculator2");
    caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.calculator2.Calculator");

  2. Теперь на нужно найти два числа. Будем искать их по name:

    WebElement five=driver.findElement(By.name("5"));
    WebElement four=driver.findElement(By.name("4"));

  3. Также, нужно найти знаки "+" и "="; будем искать по AccessabilityID:

    WebElement plus=driver.findElement(By.name("+"));
    WebElement equalTo=driver.findElementByAccessibilityId("equals"));

  4. Теперь, кликаем:

    five.click();
    plus.click();
    four.click();
    equalTo.click();

  5. Запустите свой тест, используя TestNG:

    public class TestAppIication {
      AndroidDriver driver;
      @BeforeClass
      public void setUp() throws MalformedURLException{
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
        caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");
        caps.setCapability("avd","AVD_Nexus_4");// Mention the created AVD name
        caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculator2");
        caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.calculator2.Calculator");
        driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
      }
      @Test
      public void testExample(){
        WebElement five=driver.findElement(By.name("5"));
        five.click();
        WebElement plus=driver.findElement(By.name("+"));
        plus.click();
        WebElement four=driver.findElement(By.name("4"));
        four.click();
        WebElement equalTo=driver.findElementByAccessibilityId("equals"));
        equalTo.click();
      }
      @AfterClass
      public void tearDown(){
        driver.closeApp();
      }
    }


iOS


Ниже пример работы с приложением TestApp; его можно скачать отсюда. После скачивания, разархивируйте его.



В этом примере попробуем сложить два числа:

  1. Обновите метод setup(), чтобы запустить TestApp:

    File app=new File("/Users/mhans/appium/ios/TestApp.app");//You can change it with your app address
    caps.setCapability(MobileCapabilityType.APP,app);

  2. Теперь нужно найти элементы для ввода чисел; будем искать по name:

    WebElement editBox1=driver.findElement(By.name("TextField1"));
    WebElement editBox2=driver.findElement(By.name("TextField2"));

  3. Затем, найдем кнопку compute; используем AccessibilityID:

    WebElement computeSumBtn=driver.findElementByAccessibilityId("Compute Sum"));

  4. Введем значение в первое поле:

    editBox1.sendKeys("10");
  5. Введем значение во второе:

    editBox2.sendKeys("20");
  6. Теперь, клик по кнопке Compute Sum:

    computeSumBtn.click();
  7. Запустите свой тест, используя TestNG:

    public class TestAppIication {
      IOSDriver driver;
      @BeforeClass
      public void setUp() throws MalformedURLException{
      File app=new File("/Users/mhans/appium/ios/TestApp.app");//You can change it with your app address
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability(MobileCapabilityType.APP,app);
        caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
        caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
        caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5");
        driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
      }
      @Test
      public void testExample(){
        WebElement editBox1=driver.findElement(By.name("TextField1"));
        editBox1.sendKeys("10");
        WebElement editBox2=driver.findElement(By.name("TextField2"));
        editBox2.sendKeys("20");
        WebElement computeSumBtn=driver.findElementByAccessibilityId("Compute Sum"));
        computeSumBtn.click();
      }
      @AfterClass
      public void tearDown(){
        driver.closeApp();
      }
    }




Работа с веб-приложениями


Android


В качестве примера, возьмем поисковую страницу Google. Для работы будем использовать нативный браузер Android:



  1. Обновите метод setup() для запуска браузера:

    caps.setCapability("avd","AVD_Nexus_4");
    caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser");

  2. Теперь нужно перейти на www.google.com:

    driver.get("https://www.google.com");

  3. Нужно найти элемент searchBox; искать будем по name:

    WebElement searchBox=driver.findElement(By.name("q"));

  4. Затем, введем поисковый запрос:

    searchBox.sendKeys("Appium for mobile automation");

  5. Запустите свой тест, используя TestNG:

    public class TestAppIication {
      AndroidDriver driver; 
      @BeforeClass
        public void setUp() throws MalformedURLException{ 
          DesiredCapabilities caps = new DesiredCapabilities();
          caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser");
          caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
          caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
          caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");
          caps.setCapability("avd","AVD_Nexus_4");// Mention the created AVD name
          driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
          driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
          }
        @Test
        public void testExample() {
        driver.get("https://www.google.com");
        WebElement searchBox=driver.findElement(By.name("q"));
        searchBox.sendKeys("Appium for mobile automation");
      }
      @AfterClass
      public void tearDown(){
        driver.quit();
      }
    }


iOS


В качестве примера, возьмем поисковую страницу Google. Для работы будем использовать нативный браузер Safari:



  1. Обновите метод setup(), чтобы запустить Safari:

    caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");

  2. Нужно перейти на www.google.com:

    driver.get("https://www.google.com");

  3. Затем, найти поисковую строку (по name):

    WebElement searchBox=driver.findElement(By.name("q"));

  4. В поисковую строку отправить запрос:

    searchBox.sendKeys("Appium for mobile automation");

  5. Запустите свой тест, используя TestNG:

    public class TestAppIication {
      IOSDriver driver; 
      @BeforeClass
      public void setUp() throws MalformedURLException{ 
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
        caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
        caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
        caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5");
        driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
        }
      @Test
      public void testExample(){
        driver.get("https://www.google.com");
        WebElement searchBox=driver.findElement(By.name("q"));
        searchBox.sendKeys("Appium for mobile automation");
        }
      @AfterClass
      public void tearDown(){
      driver.quit();
      }
    }




Автоматизация гибридных приложений


Android


Для изучения, используем testApp. Его можно скачать отсюда. Перед работой с гибридными приложениями, нужно выполнить шаги инструкции.


  1. Обновите метод setup(), чтобы запустить приложение:

    File app=new File("C:\\Appium_test\\testApp.apk");
    caps.setCapability(MobileCapabilityType.APP,app);
    caps.setCapability("avd","AVD_Nexus_4");
    caps.setCapability(MobileCapabilityType.APP_PACKAGE, " com.example.testapp");
    caps.setCapability(MobileCapabilityType.APP_ACTIVITY, " MainActivity");

  2. Нам нужно найти поле для ввода нашего URL (https://www.google.com), найдем его по ID:

    WebElement editBox=driver.findElement(By.id("com.example.testapp:id/urlField"));
    editBox.sendKeys("https://www.google.com");

  3. Теперь найдем кнопку Go:

    WebElement goButton=driver.findElement(By.name("Go"));

  4. Кликаем на кнопку:

    goButton.click();

  5. Теперь нужно переключить контекст:

    Set<String> 
    contexts = driver.getContextHandles();
    for (String context : contexts) {
      System.out.println(context); //выведет список контекстов вроде NATIVE_APP или WEBVIEW_com.example.testapp
    }

  6. Переключаемся на web_view:

    driver.context("WEBVIEW_com.example.testapp");

    или так:

    driver.context((String) contextNames.toArray()[1]);

  7. Теперь можно работать с веб-страницей Google. Можем кликнуть на вкладку Images и найти элемент по linkText:

    WebElement images=driver.findElement(By.linkText("Images"));
    images.click();

  8. Запустите свой тест, используя TestNG:

    public class TestAppIication {
      AndroidDriver driver; 
      @BeforeClass
      public void setUp() throws MalformedURLException{
        DesiredCapabilities caps = new DesiredCapabilities();
        File app= new File("/Users/mhans/appium/ios/webViewApp. app");
        caps.setCapability(MobileCapabilityType.APP,app");
        caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
        caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");
        caps.setCapability("avd","AVD_Nexus_4");// Mention the created AVD name
        caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");//Use Selendroid in case of <4.4 android version
        caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.example.testapp");
        caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.example.testapp.MainActivity");
        driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
      }
      @Test
      public void testExample(){
        WebElement editBox=driver.findElement(By.id("com.example.testapp:id/urlField"));
        editBox.sendKeys("https://www.google.com");
        WebElement goButton=driver.findElement(By.name("Go"));
        goButton.click();
        Set<String> contexts = driver.getContextHandles();
        for (String context : contexts) {
          System.out.println(context);
        }
        driver.context((String) contexts.toArray()[1]);
        WebElement images=driver.findElement(By.linkText("Images"));
        images.click();
      }
      @AfterClass
      public void tearDown(){
        driver.closeApp();
      }
    }
    

iOS


Здесь возьмем, для примера, WebViewApp. Скачать можно отсюда. После скачивания, разархивируйте приложение:



  1. Обновите метод setup(), чтобы запустить приложение:

    File app=new File("/Users/mhans/appium/ios/WebViewApp.app");
    caps.setCapability(MobileCapabilityType.APP,app);

  2. Нужно найти поисковую строку чтобы передать туда URL (https://www.google.com). Давайте найдем ее по className:

    WebElement editBox=driver.findElement(By.className("UIATextField"));
    editBox.sendKeys("www.google.com");

  3. Теперь, по name найдем кнопку Go:

    WebElement goButton=driver.findElement(By.name("Go"));

  4. Клик:

    goButton.click();

  5. Теперь нужно получить список контекстов:

    Set<String> contexts = driver.getContextHandles();
    for (String context : contexts) {
      System.out.println(context);
    }

  6. И переключиться для работы с web_view:

    driver.context("WEBVIEW_com.example.testapp");

    или

    driver.context((String) contextNames.toArray()[1]);

  7. Теперь можно работать с веб-страницей Google. Можем кликнуть на вкладку Images и найти элемент по linkText:

    WebElement images=driver.findElement(By.linkText("Images"));
    images.click();

  8. Запустите свой тест, используя TestNG:

    public class TestAppIication {
      IOSDriver driver;
      @BeforeClass
      public void setUp() throws MalformedURLException{
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");
        caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
        caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5");
        driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
      }
      @Test
      public void testExample(){
        WebElement editBox=driver.findElement(By.className("UIATextField"));
        editBox.sendKeys("https://www.google.com");
        WebElement goButton=driver.findElement(By.name("Go"));
        goButton.click();
        Set<String> contexts = driver.getContextHandles();
        for (String context : contexts) {
          System.out.println(context);
        }
        driver.context((String) contexts.toArray()[1]);
        WebElement images=driver.findElement(By.linkText("Images"));
        images.click();
      }
      @AfterClass
      public void tearDown(){
        driver.closeApp();
      }
    }



На этом все. В следующей главе, мы посмотрим особенности работы с реальными устройствами
Tags:
Hubs:
+3
Comments 0
Comments Leave a comment

Articles