Всем привет, подскажите пожалуйста, наиболее практичное решение для автоматизации тестирования Windows GUI приложений, и чем вытягивать элементы приложения…
Спасибо.
Всем привет, подскажите пожалуйста, наиболее практичное решение для автоматизации тестирования Windows GUI приложений, и чем вытягивать элементы приложения…
Спасибо.
Панацеи нету. Можно использовать любой современный язык который сможет загрузить kernel32.dll и user32.dll.
Но проще всего наверное будет использовать AutoIt, так как он под это заточен.
Читал о нем, спасибо, но что-то не нашел, как там можно искать локаторы, есть ли какой-то общий инспектор может?
В нем есть скрипт написаный на том же аутоите, который резолвит локаторы окон.
https://www.autoitscript.com/autoit3/docs/intro/au3spy.htm
Спасибо, буду пробовать
Artur, подскажи пожалуйста, сталкивался ли когда-то с не стандартными элементами интерфейса, нарисованными самой программой?
К примеру “Au3Info.exe” - не ловит элементы “IntelliJ IDEA”, тоже самое и в тестируемом мною софте, инспекторы не находят элементы программки, может сталкивались когда-то с подобным?
Intelij вроде использует jre для рисования своих окон, хотя могу ошибаться, я с джавой не дружу с момента первого знакомства (версии с 4-й, тогда ещё 1.4). Но всё что рисуется в винде будет иметь свой обьект. Каждая кнопка - это отдельное окно на которое можно получить хендл.
Самая мощная утилита для мониторинга активности процесса - ProcMon от SysInternals. В неё можно настроить фильтры и следить за всем что программа делает. И нажимая на кнопки выловить необходимый хендл.
Ещё как вариант костыля вы можете выполнить клик по координатам внутри окна. Но тогда тяжело будет отследить ожидаемый результат (можно, но относительно тяжело, необходимо будет перехватить ивент с помощью библиотеки user32, который возникает при клике на кнопку).
Спасибо, наверное так делать и будем, но костыли - эт плохо, еще поресерчим Если чет решиться не костыльное, отпишу сюда
Спасибо…
Подивись в сторону TestStack White. В принципі нормальна штука, якщо ГУІ не має багато елементів і нема роботи з кастомними елементами. Плюси цієї штуки: зручно використовувати клаву і мишку без додаткових танців з бубнами, досить проста штука у використанні. мінуси - перфоманс під час пошуку елементів ГУІ.
Якщо ж елементів багато, то краще використай UI Automation. Мінуси - трохи незручний спочатку у використанні (особливо для роботи з мишкою), але потім звикаєш і все ок . Величезним плюсом є те, що пошук елементів проходить дуже швидко.
Для пошуку елементів ГУІ використовуй краще VisualUIAVerifyNative, який встановлюється разом з Windows Kits
Можете попробовать посмотреть в сторону Sikuli - работает с изображениями элементов, а не с локаторами. Т.е., предварительно придется еще и скрины наделать того, куда жмакать) Прикручивается к джаве. Тут немного инфы Sikuli + Java
White. Winium. Оба - обертки над MS UI Automation. Юзать голый UI automation не стоит.
Насчёт минуса White - медлительность не актуальна. Можно прописывать полный путь к элементу. Или руками искать через тот же UI automation.
Для поиска локаторов - UI verify или любая подобная Тула из гугла, строящая дерево из automation элементов.
Sikuli и Autoit для нормальной автоматизации лучше не использовать.
Минус Сикули в том что он базируется на распознавании образов. А значит есть шанс что тест заведомо даст ложный результат. И это не есть хорошо в тестировании. Тест должен гарантировать результат, 100%, а не 95% или 99%.
Вайт и Виниум - это Си# , я на дотнет не писал, из только на ютубе посмотрел. В принципе вроде удобный язык, удобный инструмент, использует дотнет для доступа к окнам (как и винда начиная с 7-й версии, ну и в полном обьеме с 10й наверное). Но принцип заложен тот же что и с аутоитом.
AutoIt плох тем, что инструмент все знают но мало кто использует в Европе. По-этому тяжело найти человека который бы на нем писал и мог бы поддерживать тесты и писать новые. В США его как-то больше используют и я видел настоящие Вуду техники с аутоитом. Он сам по себе достаточен и ни в чем не уступит инструментам выше… кроме меньшей популярности (что тоже очень важно). Да и дотнет не нужен, все исполняемые файлы содержат интерпретатор автоита. Слинковал и запустил.
Так что автору темы наверное лучше посмотреть на вайт или виниум, как утилиты с более удобным синтаксисом и большей популярностью.
Можливо у вас є досвід написання драйвера на java для автоматизації тестування Windows desktop applications? Буду вдячний за будь-яку інформацію.
Посмотри Winium…
Дякую, почав дивитись…
Winium, Microsoft Application Driver (beta)
Если говорить уже например о Swing/JavaFX десктоп приложениях - JavaDriver от Marathon (версия 4+), но там пока нет документации и внятных примеров