Read this article in your language IT | EN | DE | ES
Автоматизация тестирования пользовательского интерфейса с помощью 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 включает:
- Обновленный WinAppDriver включает улучшения Стилуса, а также расширенные функции ввода:
- Давление
- Наклон X и Наклон Y
- Изгиб
- Кнопка Barrel
- Ластик
- Appium-Dotnet-Driver NuGet Package
- Это предварительный просмотр Nuget пакета с обновленными привязками для автоматизации Стилуса в WinAppDriver.
- Образцы и документация на GitHub
Обратите внимание, что полная версия также будет включать мульти-сенсорную поддержку - подробнее об этом ниже.
Начало работы с Стилусом
Прежде чем начать использовать Стилус, 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 из Предварительного просмотра.
- Мульти-сенсорная поддержка будет также добавлена в 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, чтобы загрузить предварительный просмотр, и попробуйте работу с автоматизированным Стилусом, просмотрев обновленные
образцы.
Exception: Stack empty.