Posted on 19. May 2018

Автоматизация тестирования UI с WinAppDriver - с поддержкой Стилуса

Автоматизация тестирования пользовательского интерфейса с помощью WinAppDriver - теперь с поддержкой Стилуса

 

Windows Application Driver (WinAppDriver) продолжает развиваться в области автоматизации тестирования пользовательского интерфейса для Windows 10, и Microsoft рады объявить о следующем выпуске WinAppDriver — версии 1.1!

На сегодняший день уже доступен предварительный просмотр, который включает в себя поддержку автоматизации Стилуса. Полный выпуск (версия 1.1) находится в процессе разработки и будет включать мульти-сенсорную поддержку в дополнение к Стилусу.

Что такое WinAppDriver?

Для тех, кто не знаком с автоматизацией WinAppDriver или пользовательским интерфейсом: WinAppDriver - это сервис, основанный на открытых стандартах, для автоматизации тестирования пользовательского интерфейса, предназначен для работы со всеми Windows 10 приложениями, включая WPF, WinForms, Win32 и UWP. Пользуясь открытым стандартом, пользователи WinAppDriver смогут использовать надежную систему автоматизации пользовательского интерфейса, уже предоставленную Appium и Selenium.

Что нового в предварительном просмотре версии 1.1

В версии 1.1 Microsoft равняется на W3C WebDriver стандарт и, в результате, внедряет опцию Actions API для расширенной поддержки устройств ввода.

Предварительный просмотр версии 1.1 включает:

  1. Обновленный WinAppDriver включает улучшения Стилуса, а также расширенные функции ввода:
  • Давление
  • Наклон X и Наклон Y
  • Изгиб
  • Кнопка Barrel
  • Ластик

  1. Appium-Dotnet-Driver NuGet Package
  • Это предварительный просмотр Nuget пакета с обновленными привязками для автоматизации Стилуса в WinAppDriver.
  1. Образцы и документация на GitHub
Обратите внимание, что полная версия также будет включать мульти-сенсорную поддержку - подробнее об этом ниже.

Начало работы с Стилусом

Вы можете скачать предварительную версию WinAppDriver на GitHub странице: https://github.com/Microsoft/WinAppDriver/releases.

Прежде чем начать использовать Стилус, Microsoft настоятельно рекомендует изучить новый образец Sticky Notes здесь.

Быстрое и простое рисование смайлика 🙂

Чтобы продемонстрировать что-то более сложное, чем просто несколько штрихов на стикере, Microsoft нарисовали смайлик с помощью следующих шагов:

Шаг 1 - Использование Стилуса для рисования круга

 

//Initiate a Pen object using the custom Dotnet Driver Bindings. 
PointerInputDevice penDevice = new PointerInputDevice(PointerKind.Pen);
ActionSequence drawSequence = new ActionSequence(penDevice, 0);
 
//Set starting position of circle by its center point.
var centerX = canvasCoordinate.X + canvasSize.Width / 5 + 285;
var centerY = canvasCoordinate.Y + canvasSize.Height / 5 + 270;
//Radius of circle. 
var radius = 200;
/* This value will dictate the granularity of the number of stokes to complete the strokes. The more steps, the less blocky the circle will be. Note: Sticky Notes will interpolate between the steps anyway, so it will not appear blocky if Pen is not lifted. */
var steps = 50;
// These two variables will calculate either the X or Y coordinate around the center of the circle for a given step. 
int xValue = (int)(centerX + radius * Math.Cos(2 * Math.PI * 0 / steps));
int yValue = (int)(centerY + radius * Math.Sin(2 * Math.PI * 0 / steps));
drawSequence.AddAction(penDevice.CreatePointerMove(CoordinateOrigin.Viewport, xValue, yValue, TimeSpan.Zero));
drawSequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenFrontTip));
/* Function to draw circle by calculating coordinates around center point and brushing through them. */
for (var i = 0; i <= steps; i++) { 
xValue = (int)(centerX + radius * Math.Cos(2 * Math.PI * i / steps));
yValue = (int)(centerY + radius * Math.Sin(2 * Math.PI * i / steps));                       drawSequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
drawSequence.AddAction(penDevice.CreatePointerMove(CoordinateOrigin.Viewport, xValue, yValue, TimeSpan.Zero));
}
//Lifting pen up once Circle is drawn. drawSequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
//Final step would be to execute the sequence.
newStickyNoteSession.PerformActions(new List { drawSequence });

 

Шаг 2 - Добавление смайлика

Вам нужно будет изучить эту часть более подробно и изменить исходный цикл по элементам с шага 1, а также добавить к нему дополнительный код. Следующие шаги будут идти в такой же последовательности.

 

/* Loop modified to iterate past opening step and closing step of circle. This will create an opening for the smiley ìmouthî. */
for (var i = 0; i < steps; i++) { 
xValue = (int)(centerX + radius * Math.Cos(2 * Math.PI * i / steps));
yValue = (int)(centerY + radius * Math.Sin(2 * Math.PI * i / steps)); 
if (i > 1){            
drawSequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
 
}                   drawSequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
drawSequence.AddAction(penDevice.CreatePointerMove(CoordinateOrigin.Viewport, xValue, yValue, TimeSpan.Zero));
}
drawSequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
/* The following vars will calculate X & Y coordinates for start and end point of the smile. */
var xSmile = (int)(centerX + radius * Math.Cos(2 * Math.PI * 1 / steps));
var ySmile = (int)(centerY + radius * Math.Sin(2 * Math.PI * 1 / steps));
var xSmile2 = (int)(centerX + radius * Math.Cos(2 * Math.PI * (steps - 1) / steps));
var ySmile2 = (int)(centerY + radius * Math.Sin(2 * Math.PI * (steps - 1) / steps));
 
/* Continue previous sequence and execute the Pen actions. */
drawSequence.AddAction(penDevice.CreatePointerMove(CoordinateOrigin.Viewport, xSmile, ySmile, TimeSpan.Zero));
drawSequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
drawSequence.AddAction(penDevice.CreatePointerMove(CoordinateOrigin.Viewport, centerX, centerY, TimeSpan.FromMilliseconds(400), new PenInfo { Pressure = .600f }));
drawSequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
drawSequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
drawSequence.AddAction(penDevice.CreatePointerMove(CoordinateOrigin.Viewport, xSmile2, ySmile2, TimeSpan.FromMilliseconds(400)));
 
// Execute sequence.
newStickyNoteSession.PerformActions(new List { drawSequence });

 

Применение дополнительного давления к «штрихам улыбки» для добавления глубины. Эскиз будет выглядеть следующим образом:

 

Шаг 3 - Глаза

Если бы Вы хотели закончить и добавить глаза, это выглядело бы примерно так:

Есть много интересных способов, с помощью которых Вы можете добавить глаза, и Вы можете выбрать, какой из них лучше для Вас. Полный код дизайна будет включен как часть образца Sticky Notes на GitHub!

Подробнее о полной версии 1.1

Полная версия 1.1 будет включать такие дополнения:

WinAppDriver

 

  1. Поддержка Стилуса будет перенесена в полную версию 1.1 из Предварительного просмотра.
  2. Мульти-сенсорная поддержка будет также добавлена в Actions API. Поддерживаются следующие модификаторы касания:

 

 

  • Давление
  • Изгиб

 

 

Новые образцы и привязки

Образцы из предварительного просмотра будут дополнительно расширены, чтобы продемонстрировать функциональность Стилуса и Мульти-сенсорной поддержки. Образцы будут включать в себя приватное устройство подачи Apium-Dotnet-Driver Nuget, который будет делать возможной реализацию Action через новые привязки. Microsoft с нетерпением ждет, когда эти изменения будут объединены в официальный Appium .Net Driver, и затем будет свернут в Selenium Namespace в будущем.

Дата выпуска

Дата выпуска полной версии 1.1 запланированна на июнь - следите за обновлениями и ознакомтесь с дополнительной информацией на странице GitHub!

Что будет дальше

Команда WinAppDriver продолжает работу над добавлением новых функций, устранением ошибок и повышением производительности. Они также изучили популярные запросы сообщества и уже работают над Вашими интересными идеями, которые будут добавлены в версии 1.2 и последующих. Одна из этих идей — повышение производительности при XPath обработке.

В будущем также будет выпущен новый инструмент для сообщества - более подробная информация об этом будет опубликована в ближайшие время. Следите за новостями!

Как отправить отзыв?

Пожалуйста, оставьте Ваш отзыв на странице Github - Microsoft с нетерпением ждет Ваших предложений, запросов по добавлению новых функций или отчетов об ошибках!


Если у Вас есть классные эскизы, сделанные в версии 1.1, которыми Вы хотели бы поделиться, оставьте их на странице GitHub! Возможно именно Ваш эскиз будет показан в следующих блог постах!

Будьте в курсе событий

Чтобы оставаться в курсе всех новостей WinAppDriver, следите за публикациями @mrhassanuz.

В заключение

Сегодня уже доступен Предварительный просмотр версии 1.1, позволяющий пользователям автоматизировать сценарии Стилуса. Полный выпуск версии 1.1 будет также включать мульти-сенсорную поддержку. Перейдите на страницу выпусков на GitHub, чтобы загрузить предварительный просмотр, и попробуйте работу с автоматизированным Стилусом, просмотрев обновленные образцы.



Comments are closed