1

Swing インターフェイスで特定のアクションをシミュレートするために AWT ロボットを使用するテスト FEST アプリがあります。私の問題は、ロボット テストの実行中にマウス ポインターを移動すると、列ヘッダーを押すなどのプログラム アクションの一部がキャンセルされるように見えることです。実行中に何も触れないと、カーソルがターゲットに移動してヒットします。

テストが終了するまで、そのアプリのマウス ユーザー入力をブロックする方法はありますか?

たぶんブロックではなく、イベントを無視する方法、EDT の終了を強制する方法、またはロボットをシールドする方法はもちろん高く評価されます

4

2 に答える 2

1

ネイティブの端末コマンドを使用して、キーボードとマウスを無効にできるかもしれません。つまり、Windows の場合は cmd.exe、Linux の場合はターミナル (アプリケーションを移植可能にする必要があるかどうかに応じて、OS 名を確認してから正しいコマンドを実行するだけです) ですが、これがRobot役に立たないかどうかはわかりません。でもないと思います。

ウィンドウズ:

cmd.exe /c %Homedrive%\windows\rundll32.exe マウス、無効化

cmd.exe /c %Homedrive%\windows\rundll32.exe キーボード、無効化

Linuxについては、こちらを参照してください

補遺:

私の知る限り、純粋な Java では、JNI を使用せずにユーザーからのキーボードとマウスの入力を無効にすることはできません。

JavaでJNIを使​​用してマウスとキーボードを無効にするための優れたリンクは次のとおりです。Javaグローバルキーボード/マウスフック-JNI

于 2012-07-30T19:41:21.943 に答える
0

AWT ロボットを使用してエンド ツー エンドのテストを展開するのが難しい場合は、テストを分離して、タッチされた機能をチェックする部分のみを実行できるようにし、一連のエンド ツー エンドのテストはすべてビルド サーバーで実行する必要があります。

以下は、ヘッドレス ビルド サーバーで完了する Swing アプリケーションのAWTロボットによるエンド ツー エンド テストの結果です。

于 2012-07-30T19:55:15.503 に答える