Уважаемые гуру, так сложилась моя жизнь, что до сего дня все время работал с встроенным софтом. Писал на Python и был счастлив. Но сегодня передо мной встала во всей своей красе проблемма, как автоматизировать приложение, которое существует под Windows и под OSX. Понятное дело, что с API частью особых проблем не возникло. Но вот что касается GUI… Попрбовал UIsoup и LDTP. Первый, как выяснилось, не хочет сосуществовать с 64-битным Python. И если в мире Windows можно пойти на это и поставить 32-битный Python на 64-битную систему, то вот в яблочном мире с этим хуже. LDTP тоже не доставил удовольствия. В своей OSX ипостаси (atomac) он не находит окно по AppBundleID, которое только что по этому самому AppBundleId открыл. Не говоря уже о том, что тормозят оба модуля безбожно.
Подскажите, может у кого есть удачный опыт с этими или какими иными модулями. Или инструмент какаой, желательно хоть как-то интегрируемый с Python. Ну в крайнем случае придумаем как интегрировать, но важно, чтобы можно было работать с GUI на Windows и MacOS.
А нужно именно бесплатное решение?
А то мы у себя для тестирования Qt-приложения под Win и Linux используем Squish и вполне счастливы, разница минимальна. Squish же работает и под MacOS, правда я лично не пробовал.
Ну бесплатное решение - это, конечно, же лучше. Но работоспособное платное вполне приемлемо. Проблемма пока в том, что большинство того, что мы пробовали имеет неприемлимый список ограничений или ведет себя странно. UIsoup не работает с 64 битным Python, находящийся сейчас в стадии пробы PyAutoGUI, похоже, не умеет находить окна. По крайней мере в документации я не нашел ничего относящегося к этому. Да и в планах на будущее, кажется, видел, что работу с окнами надо еще делать. Давайте попробуем Squish. Может быть и мы будем счастливы. Спасибо!
Если что-то не получится - обязательно спросите саппорт. Они нам, например, делают даже кастомные билды Сквиша с более свежей версией питона, так что вполне возможно, что и ваша проблема будет решена.
Оба инструмента реализуют единый интерфейс JsonWire Protocol (aka Selenium WebDriver Protocol), т.е. API для написания тестов будет одинаковым. При этом, т.к. в Selenium исползьуется клиент-серверная архитектура, то тесты (клиент) можно писать на любом языке, в том числе и на python.
Но я лично Appium for Mac не использовал и не знаю на сколько он готов к серьезному использованию, но он, как и Winium, полностью open source, т.е. можно подпилить, если надо.
Это правда. Системы поиска окон и контролов в PyAutoGUI нет.
На чём сделан GUI - это важная информация. Например, с 64-битным питоном умеет работать pywinauto, но он пока перемалывает только нативные GUI (этой зимой подключим UI Automation API, и будет больше приложений покрыто, на линуксах тоже кое-что ковыряем, но нескоро ещё). До OS X руки дойдут года через полтора, не раньше. Если только эксперт по OS X не найдётся.
QT - вообще отдельная песня. Тут без Squish, видимо, не обойтись. Из бесплатных знаю только funq.
Оу, это интересно, спасибо за прицельные ссылки. Не совсем понял, как можно дёргать QT-шный GUI именно из питоновского скрипта, без QML файла. А ещё, я так понял, установка PyQT для всех этих возможностей обязательна? Хотелось бы понять минимальный джентльменский набор для автоматизатора QT-шного GUI приложения при полном отсутствии сорцов. И возможно ли это без установленного QT в принципе?
Очень возможно, в QT очень легко выцепить все кастомные элементы, если конечно приложение не было как-то жестоко обфусцировано. Лично по моему опыту - Squish оверхэд, монстр аля HP QuickTest, который и маштабировать достаточно сложно, да и специфики использования слишком много. Вообще с десктоп приложениями часто все очень и очень плохо, доля их падает, есть слишком много разной платформенной специфики - и тестировать, тем более автоматически их никто не хочет, большинство просто делают это руками, либо пишут свои собственные фреймворки-биндинги, если продукт этого действительно требует.