Skip to content

Latest commit

 

History

History
112 lines (81 loc) · 8.66 KB

README_RU.md

File metadata and controls

112 lines (81 loc) · 8.66 KB

Winium для Store Apps

Build Status Inner Server NuGet version GitHub release GitHub license

Winium.Mobile это реализация Selenium Remote WebDriver для автоматизации тестирования Windows StoreApps и Silverlight приложений на Windows Phone 8.1 и windows 10 Mobile

Winium.StoreApps это open-source инструмент для автоматизации как Windows Store, так и Silverlight приложений тестируемых на эмуляторах.

Поддерживаемые платформы

  • Windows Store и Silverlight
  • Windows Phone 8.1
  • Windows 10 Mobile

Для автоматизации Windows Desktop (WPF, WinForms) есть Winium Desktop.

Почему Winium?

Уже есть Selenium WebDriver для тестирования веб приложений, Appium для тестирования iOS и Android приложений. А теперь появился Selenium-based инструмент для тестирования Windows приложений. Какие он дает преимущества? Цитируя Appium:

  • You can write tests with your favorite dev tools using any WebDriver-compatible language such as Java, Objective-C, JavaScript with Node.js (in promise, callback or generator flavors), PHP, Python, Ruby, C#, Clojure, or Perl with the Selenium WebDriver API and language-specific client libraries.
  • You can use any testing framework.

А по-русски можно?

  • Пишите тесты, используя ваши любимые инструменты, любой WebDriver-совместимый язык программирования, например, Java, Objective-C, JavaScript with Node.js, PHP, Python, Ruby, C#, Clojure...
  • Используйте любой тестовый фреймворк.

Требования

  • Windows 8 или выше
  • Visual Studio 2013 (Update 2 или выше)
  • Windows phone 8.1 SDK и/или Windows 10 SDK

Вы можете взять Visual Studio и SDK с сайта Microsoft здесь.

Быстрый старт

  1. Добавить ссылку на Winium.StoreApps.InnerServer или на Winium.Silverlight.InnerServer в проекте тестируемого приложения (через NuGet пакет для Windows Store / через NuGet пакет для Silverlight или соберите проект у себя)

  2. В тестовом приложении добавьте следующий код для исполнения на UI потоке после того, как был создан коде где корневой элемент визуального дерева (обычно в MainPageOnLoaded для чистых приложений или в PrepareApplication, если вы используете Caliburn.Micro)

    // Для Windows Store приложения
    AutomationServer.Instance.InitializeAndStart();
    
    // Для Silverlight приложения
    AutomationServer.Instance.InitializeAndStart(RootFrame);

    или (если вы хотите включить драйвер только при debug сборке)

    #if DEBUG
    	// Для Windows Store приложения
    	AutomationServer.Instance.InitializeAndStart();
    
    	// Для Silverlight приложения
    	AutomationServer.Instance.InitializeAndStart(RootFrame);
    #endif // DEBUG
  3. Убедитесь, что в манифесте пакета вашего тестируемого приложения включено разрешение для возможности Internet (Client & Server). Эта возможность должна быть разрешена по умолчанию для Windows 8.1 приложений. Для UWP (Windows Mobile 10) приложений эта возможность отключена по умолчанию (включена только Internet (Client)).

  4. Пишите тесты на удобном языке. В тесте используйте app desired capability для задания пакета (appx/xap) приложения. Это пример на python:

    # put it in setUp
    app_path = 'C:\\path\\to\\testApp.appx' # For StoreApps
    app_path = 'C:\\path\\to\\testApp.xap' # For Silverlight apps
    self.driver = webdriver.Remote(
    	command_executor='http://localhost:9999',
        desired_capabilities={'app': app_path}
    )
    # put it in test method body
    element = self.driver.find_element_by_id('SetButton')
    element.click()
    assert 'CARAMBA' == self.driver.find_element_by_id('MyTextBox').text
  5. Запустите Winium.Mobile.Driver.exe (загрузить последнюю версию с github или соберите проект у себя)

  6. Запустите тесты и наслаждайтесь

Написание тестов

По сути, Winium.Mobile поддерживает ограниченное подмножество команд из WebDriver JSON Wire Protocol, т.е. вы можете писать ваши тесты также, как если бы вы писали их под Selenium или Appium, см. например документацию Selenium. В качестве примеров можно использовать наши функциональные тесты или примеры с wiki.

Как это работает

Winium.Mobile состоит из двух основных частей:

  1. Winium.Mobile.Driver реализует Selenium Remote WebDriver и слушает команды в формате JsonWireProtocol. Он отвечает за запуск эмулятора, деплой тестируемого приложения, эмуляцию ввода, перенаправление команд в Winium.StoreApps.InnerServer, и т.д.

  2. Winium.StoreApps.InnerServer / Winium.Silverlight.InnerServer (должен быть встроен в тестируемое приложение) взаимодействует с Winium.Mobile.Driver.exe и исполняет различные команды, например поиск элементов, задание и установку текстовых значений, свойств, и т.д.

Winium.StoreApps structure

Вклад в развитие

Мы открыты для сотрудничества!

  1. Проверьте нет ли уже открытого issue или заведите новый issue для обсуждения новой фичи или бага.
  2. Форкните репозиторий и начните делать свои изменения в ветке мастер или новой ветке
  3. Мы советуем написать тест, который покажет, что баг был починен или что новая фича работает как ожидается.
  4. Создайте pull-request и тыкайте в мэнтейнера до тех пор, пока он не примет и не сольет ваши изменения. 😃

Контакты

Есть вопросы? Нашли ошибку? Создавайте новое issue или пишите n.abalov@2gis.ru

Лицензия

Winium выпущен под MPL 2.0 лицензией. Подробности.