Использование обработчиков событий Qt в squishtest

Я использую библиотеку squishtest для управления приложением Qt из своего кода Python и пытаюсь использовать обработчики событий следующим образом:

import squishtest


def handle_mouse_event(event):
    print 'Clicked!'


squishtest.startApplication('application')
squishtest.installEventHandler('QMouseEvent', handle_mouse_event)

К сожалению, это не работает, т.е. ничего не происходит при щелчке элементов внутри приложения, однако это работает, если я запускаю эквивалент этого кода внутри Squish IDE во время выполнения Squish:

import squish


def handle_mouse_event(event):
    print 'Clicked!'


squish.startApplication('application')
squish.installEventHandler('QMouseEvent', handle_mouse_event)

В чем разница и как заставить обработчики событий работать с squishtest?

Python 2.7.14, Squish 6.3.1, Ubuntu 16.04


person Vader    schedule 01.03.2018    source источник
comment
Это работает для меня в Linux и Windows с Squish 6.3.x+, используя установку Python в пакете Squish, но, по общему признанию, я добавил повтор (5) в конце скриптов, чтобы иметь некоторое время, чтобы навести курсор мыши на окно приложения. , то даже события, основанные на движении мыши, вызывают выполнение функции обработчика событий. Если у вас все равно не работает рекомендую обратиться в техподдержку froglogic Squish.   -  person frog.ca    schedule 05.03.2018
comment
@frog.ca Сначала я использовал бесконечный цикл с time.sleep, но теперь вместо этого попробовал snooze, и это работает. Вероятно, сны каким-то образом блокируют цикл событий. Вы можете опубликовать свой комментарий в качестве ответа, поскольку он, вероятно, отвечает на мой вопрос.   -  person Vader    schedule 07.03.2018


Ответы (1)


(Репост как ответ, предложенный оригинальным плакатом.)

Это работает для меня в Linux и Windows с Squish 6.3.x+, используя установку Python в пакете Squish, но, по общему признанию, я добавил повтор (5) в конце скрипта, чтобы иметь некоторое время, чтобы «навести курсор мыши» на окна приложения, то даже события, основанные на движении мыши, запускают выполнение функции обработчика событий.

Еще один побочный эффект использования snooze() заключается в том, что циклы событий продолжают вращаться, чего нельзя сказать об использовании time.sleep() (которое, как вы позже упомянули, использовалось ранее).

Если у вас все равно не работает рекомендую обратиться в техподдержку froglogic Squish.

person frog.ca    schedule 08.03.2018