Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Автоматизация Windows GUI приложений и поиск элементов приложения

windows
gui
Теги: #<Tag:0x00007f7b68cd36c0> #<Tag:0x00007f7b68cd3468>

(Eugene Moskalenko) #1

Всем привет, подскажите пожалуйста, наиболее практичное решение для автоматизации тестирования Windows GUI приложений, и чем вытягивать элементы приложения…

Спасибо.


(Artur Korobeynyk) #2

Панацеи нету. Можно использовать любой современный язык который сможет загрузить kernel32.dll и user32.dll.
Но проще всего наверное будет использовать AutoIt, так как он под это заточен.


(Eugene Moskalenko) #3

Читал о нем, спасибо, но что-то не нашел, как там можно искать локаторы, есть ли какой-то общий инспектор может?


(Artur Korobeynyk) #4

В нем есть скрипт написаный на том же аутоите, который резолвит локаторы окон.
https://www.autoitscript.com/autoit3/docs/intro/au3spy.htm


(Eugene Moskalenko) #5

Спасибо, буду пробовать :smile:


(Eugene Moskalenko) #6

Artur, подскажи пожалуйста, сталкивался ли когда-то с не стандартными элементами интерфейса, нарисованными самой программой?

К примеру “Au3Info.exe” - не ловит элементы “IntelliJ IDEA”, тоже самое и в тестируемом мною софте, инспекторы не находят элементы программки, может сталкивались когда-то с подобным?


(Artur Korobeynyk) #7

Intelij вроде использует jre для рисования своих окон, хотя могу ошибаться, я с джавой не дружу с момента первого знакомства (версии с 4-й, тогда ещё 1.4). Но всё что рисуется в винде будет иметь свой обьект. Каждая кнопка - это отдельное окно на которое можно получить хендл.
Самая мощная утилита для мониторинга активности процесса - ProcMon от SysInternals. В неё можно настроить фильтры и следить за всем что программа делает. И нажимая на кнопки выловить необходимый хендл.


(Artur Korobeynyk) #8

Ещё как вариант костыля вы можете выполнить клик по координатам внутри окна. Но тогда тяжело будет отследить ожидаемый результат (можно, но относительно тяжело, необходимо будет перехватить ивент с помощью библиотеки user32, который возникает при клике на кнопку).


(Eugene Moskalenko) #9

Спасибо, наверное так делать и будем, но костыли - эт плохо, еще поресерчим :slight_smile: Если чет решиться не костыльное, отпишу сюда :smile:

Спасибо…


(Влад) #10

Подивись в сторону TestStack White. В принципі нормальна штука, якщо ГУІ не має багато елементів і нема роботи з кастомними елементами. Плюси цієї штуки: зручно використовувати клаву і мишку без додаткових танців з бубнами, досить проста штука у використанні. мінуси - перфоманс під час пошуку елементів ГУІ.

Якщо ж елементів багато, то краще використай UI Automation. Мінуси - трохи незручний спочатку у використанні (особливо для роботи з мишкою), але потім звикаєш і все ок :blush:. Величезним плюсом є те, що пошук елементів проходить дуже швидко.

Для пошуку елементів ГУІ використовуй краще VisualUIAVerifyNative, який встановлюється разом з Windows Kits


(Pavel Ordenko) #11

Можете попробовать посмотреть в сторону Sikuli - работает с изображениями элементов, а не с локаторами. Т.е., предварительно придется еще и скрины наделать того, куда жмакать) Прикручивается к джаве. Тут немного инфы Sikuli + Java


(Nick) #12

White. Winium. Оба - обертки над MS UI Automation. Юзать голый UI automation не стоит.

Насчёт минуса White - медлительность не актуальна. Можно прописывать полный путь к элементу. Или руками искать через тот же UI automation.

Для поиска локаторов - UI verify или любая подобная Тула из гугла, строящая дерево из automation элементов.

Sikuli и Autoit для нормальной автоматизации лучше не использовать.


(Artur Korobeynyk) #13

Минус Сикули в том что он базируется на распознавании образов. А значит есть шанс что тест заведомо даст ложный результат. И это не есть хорошо в тестировании. Тест должен гарантировать результат, 100%, а не 95% или 99%.
Вайт и Виниум - это Си# , я на дотнет не писал, из только на ютубе посмотрел. В принципе вроде удобный язык, удобный инструмент, использует дотнет для доступа к окнам (как и винда начиная с 7-й версии, ну и в полном обьеме с 10й наверное). Но принцип заложен тот же что и с аутоитом.
AutoIt плох тем, что инструмент все знают но мало кто использует в Европе. По-этому тяжело найти человека который бы на нем писал и мог бы поддерживать тесты и писать новые. В США его как-то больше используют и я видел настоящие Вуду техники с аутоитом. Он сам по себе достаточен и ни в чем не уступит инструментам выше… кроме меньшей популярности (что тоже очень важно). Да и дотнет не нужен, все исполняемые файлы содержат интерпретатор автоита. Слинковал и запустил.
Так что автору темы наверное лучше посмотреть на вайт или виниум, как утилиты с более удобным синтаксисом и большей популярностью.


(Roman Labyk) #14

Можливо у вас є досвід написання драйвера на java для автоматизації тестування Windows desktop applications? Буду вдячний за будь-яку інформацію.


(Yurij Litvin) #15

Посмотри Winium…


(Roman Labyk) #16

Дякую, почав дивитись…


(Dmitrii Demin) #17

Winium, Microsoft Application Driver (beta)
Если говорить уже например о Swing/JavaFX десктоп приложениях - JavaDriver от Marathon (версия 4+), но там пока нет документации и внятных примеров