Winium.StoreApps это open-source инструмент для автоматизации как Windows Store, так и Silverlight приложений тестируемых на эмуляторах.
- Windows Store и Silverlight
- Windows Phone 8.1
- Windows 10 Mobile
Для автоматизации Windows Desktop (WPF, WinForms) есть Winium Desktop.
Уже есть 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 здесь.
-
Добавить ссылку на
Winium.StoreApps.InnerServer
или наWinium.Silverlight.InnerServer
в проекте тестируемого приложения (через NuGet пакет для Windows Store / через NuGet пакет для Silverlight или соберите проект у себя) -
В тестовом приложении добавьте следующий код для исполнения на 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
-
Убедитесь, что в манифесте пакета вашего тестируемого приложения включено разрешение для возможности
Internet (Client & Server)
. Эта возможность должна быть разрешена по умолчанию для Windows 8.1 приложений. Для UWP (Windows Mobile 10) приложений эта возможность отключена по умолчанию (включена толькоInternet (Client)
). -
Пишите тесты на удобном языке. В тесте используйте
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
-
Запустите
Winium.Mobile.Driver.exe
(загрузить последнюю версию с github или соберите проект у себя) -
Запустите тесты и наслаждайтесь
По сути, Winium.Mobile поддерживает ограниченное подмножество команд из WebDriver JSON Wire Protocol, т.е. вы можете писать ваши тесты также, как если бы вы писали их под Selenium или Appium, см. например документацию Selenium. В качестве примеров можно использовать наши функциональные тесты или примеры с wiki.
Winium.Mobile состоит из двух основных частей:
-
Winium.Mobile.Driver реализует Selenium Remote WebDriver и слушает команды в формате JsonWireProtocol. Он отвечает за запуск эмулятора, деплой тестируемого приложения, эмуляцию ввода, перенаправление команд в
Winium.StoreApps.InnerServer
, и т.д. -
Winium.StoreApps.InnerServer / Winium.Silverlight.InnerServer (должен быть встроен в тестируемое приложение) взаимодействует с
Winium.Mobile.Driver.exe
и исполняет различные команды, например поиск элементов, задание и установку текстовых значений, свойств, и т.д.
Мы открыты для сотрудничества!
- Проверьте нет ли уже открытого issue или заведите новый issue для обсуждения новой фичи или бага.
- Форкните репозиторий и начните делать свои изменения в ветке мастер или новой ветке
- Мы советуем написать тест, который покажет, что баг был починен или что новая фича работает как ожидается.
- Создайте pull-request и тыкайте в мэнтейнера до тех пор, пока он не примет и не сольет ваши изменения. 😃
Есть вопросы? Нашли ошибку? Создавайте новое issue или пишите [email protected]
Winium выпущен под MPL 2.0 лицензией. Подробности.