Блокировка ввода мышью в Java Swing

У меня есть тестовое приложение FEST, которое использует робота AWT для имитации определенных действий через интерфейс Swing. Моя проблема заключается в том, что при перемещении указателя мыши во время выполнения робот-теста отменяются некоторые программные действия, например нажатие на заголовок столбца. Если вы ничего не трогаете во время выполнения, курсор перемещается в одиночку к цели и попадает в нее.

Есть ли способ заблокировать пользовательский ввод мыши для этого приложения до завершения теста?

Может быть, не блок, а способ игнорировать события, принудительное окончание EDT или экранирование робота, конечно, будут оценены

2 ответа

Может быть, вы могли бы отключить клавиатуру и мышь, используя собственные команды терминала. Т.е. cmd.exe для Windows и терминал для Linux (в зависимости от того, должно ли приложение быть переносимым, просто проверьте имя ОС, а затем выполните правильную команду), однако я не уверен, что это сделает Robot бесполезный. Я думаю, что нет, хотя.

Окна:

cmd.exe /c %Homedrive%\windows\rundll32.exe мышь, отключить

cmd.exe /c %Homedrive%\windows\rundll32.exe клавиатура, отключить

а для линукса смотри тут

Приложение:

Насколько я знаю, в чистой Java это невозможно без использования JNI для отключения ввода клавиатуры и мыши от пользователя.

Вот отличная ссылка для дисбаланса мыши и клавиатуры, использующих JNI в Java: Java Global Keyboard / Mouse Hook - JNI

Если вам сложно развиваться с помощью сквозных тестов с использованием робота AWT, попробуйте разделить тесты, чтобы можно было запускать только часть, которая проверяет функциональность, к которой обращаются, в то время как все наборы сквозных тестов должны выполняться на сервере сборки.

Вот результат сквозного тестирования роботом AWT для приложения Swing, которое выполняется на сборочном сервере без головы: http://travis-ci.org/#!/plokhotnyuk/calculator/jobs/1979904/L538

Другие вопросы по тегам