t.me/atinfo_chat Telegram группа по автоматизации тестирования

winium vs winappDriver плюсы, минусы, практический опыт

remote
winium
comparison
desktop
best-practices
selenium
Теги: #<Tag:0x00007fb2f2720d38> #<Tag:0x00007fb2f2720bf8> #<Tag:0x00007fb2f2720ab8> #<Tag:0x00007fb2f2720978> #<Tag:0x00007fb2f2720838> #<Tag:0x00007fb2f27206f8>

(Fazka Rus) #1

Коллеги привет!
У меня сейчас стоит задача написания фреймворка для автоматизации десктопа (та еще головная боль) и встал выбор между winnapp driver и winium(пишу на java)
уже недельку пробую то одно то другую у обоих инструментов есть минусы, может кто-то поделиться опытом по следующим вопросам:
1 - winium в упор не находит элементы по xpath, кто-то пробовал? работает?(видел темы в гугле у юзеров с подобными проблемами, но решения я так понял не нашлось)
(winapp - у меня получилось только в калькуляторе по xpath найти кнопку “9”)
2 - как у них с удаленкой, кто-то запускал на виртуалке через jenkins, bamboo как работает? (видел темы что нужно поддерживать актинвый экран, но вроде эта проблема решаема)
3 - виниум уже не поддериживается как я понял, поэтому ожидать каких-то правок не стоит? например имплисити вейт не реализован и тд

вообщем может кто-то поделится опытом, с какими основными проблемами пришлось столкнуться и тд, что стоит учесть до полного выбора инструмента?


(Fazka Rus) #2

ну и в догонку мини вопросик, кто настраивал запуск через jenkins или еще какой сборщик, запуск автотестов по расписанию, нужен ли мне для этого селениум грид, или можно такими конструкциями обойтись:
DesktopOptions options = new DesktopOptions { ApplicationPath = “Exe Path” };
WiniumDriver driver = new WiniumDriver((new Uri(“http://‘XX.XX.XX.XXX:9999’/”)), options);
?


(Alexandr D.) #3

Если у Вас одна машина для запуска автотестов, то и такая конструкция не нужна - достаточно на ней поставить слэйв и запускать bat скриптом на этом слэйве “как бы локально”


(Sergey Ivanskoy) #4

На чем написано приложение, видите ли вы контролы? Имейте ввиду, что WinAppDriver только для Windows10 (согласно их документации) Зачем вам xpath? Посмотрите в сторону FlaUI - использует техноглогию UIAutomation. Но нужно на С#.

По поводу Java для десктоп фреймворка - не рекомендую начинать, т.к. скорее всего, бросите и все равно перейдете на C#. Судя по своему опыту, вам рано или поздно придется взаимодействовать с Win32 API (например, найти хендл окна и запостить туда сообщение) и Java здесь далеко не лучший язык по той простой причине, что он не родной. Подобная задача, например, может решаться подключением дополнительной библиотеки jna.

В конечном итоге, все зависит от конкретных задач и тестируемого приложения.


(Александр) #5

Использовал связку Java+WiniumDriver для написания UI тестов.
В основном это не больше тесты которые участвуют в полном процесс е2е тестов. Т.е открываю десктоп app и делаю некие манипуляции с заявками.
Основная логика крутится на web.

  1. По xpath элементы находит.Ниже пример по которому у меня находит:
    private By dinamicSapId = By.xpath("//*[starts-with(@Name,‘69301080’)]");
    Но в основном искал по id , name.
  2. СI использую TeamCity , на удаленном сервере установлен агент который ранит тесты.
    -Запуск приложения удаленно использую
    DesktopOptions option = new DesktopOptions();
    option.setApplicationPath(getProperty(“remotePath”));
    wdriver = new WiniumDriver(new URL(" сервер")option);
    -Для активного экрана использую windowSimulator.
    -Для поиска элементов использую UAI Verify

Минусы
-Долго ищет контролы.
-Если в приложении использовался DevExpress для создания форм , то проблематично работать с таблицами , так как DevExpress изменил type “table” на “window”.


(Fazka Rus) #6

Спасибо, оч полезная инфа, а можно попродобнее про windowSimulator? т.е. без активного экрана winium не пашет? а можно ссылочку на эту штуку?


(Александр) #7

Активный экран должен быть в любом случае, так как это UI тест, хоть то будет winium или winapDriver.
Симулятор есть в каждой винде и находится :
C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Simulator\


(Pavel) #8

Я работал в основном с Winium, т.к. этот инструмент работает со всем рабочем столом, а не только с приложением, как WinAppDriver. Но должен сказать в пользу второго, что он работает быстрее, т.к. работает именно с приложением.

Заметил один нюанс при работе с Winium, если у вас отрыт браузер во время работы автоматов, то искать нужный элемент будет дольше обычного, как я понял, сначала обходит все элементы браузера, а потом ищет в приложении нужный элемент. WinAppDriver работает в этом плане быстрее.

Отсюда вывод, который сделал я, если вам не нужно работать со всем раб. столом, а только с приложением, выбирайте WinAppDriver. Если нужно взаимодействие с раб. столом, выбирайте Winium