UISpec4J を使用してテスト用の外部アプリケーションを起動しようとしています。
これまでに参照した質問とその回答は次のとおりです。
Selenium WebDriverで自動化されたWebアプリケーションへのリンクをクリックして実行するswing Java Web Startアプリケーションを自動化するにはどうすればよいですか?
UISpec4J トリガー終了前のモーダル ダイアログのキャプチャ
以下の my.exe は、ツールを使用して exe でラップされた Java アプリケーションです。内部的には jar を使用し、Java GUI アプリケーションです。
この実行可能ファイルは、最初にスプラッシュ スクリーンを起動し、次に接続先を選択するダイアログを起動します。その後、メイン ウィンドウが表示されます。接続できる場所を自動化できない限り、メイン ウィンドウが表示されません。
これらの質問に基づいて、次のコード フラグメントを作成しました。
this.setAdapter(new UISpecAdapter() {
@Override
public Window getMainWindow() {
return WindowInterceptor.run(new Trigger() {
@Override
public void run() throws Exception {
// running jnlp by netx launcher
Runtime.getRuntime().exec("C:\\my.exe");
Thread.sleep(10000);
}
});
}
});
上記のアプローチでは、「ウィンドウが表示されませんでした」というエラーが表示されます。
this.setAdapter(new UISpecAdapter() {
@Override
public Window getMainWindow() {
final Window[] result = new Window[1];
WindowInterceptor
.init(new Trigger() {
@Override
public void run() throws Exception {
Runtime.getRuntime().exec("C:\\my.exe");
//Thread.sleep(10000);
}
})
//.processTransientWindow()
.process(new WindowHandler() {
public Trigger process(Window window) throws Exception {
result[0] = window;
return Trigger.DO_NOTHING;
}
})
.run();
return result[0];
}
});
上記の 2 番目のアプローチでは、「ウィンドウが表示されていません」というエラーが表示され、制御がオーバーライドされた「プロセス」メソッドに到達しません。
http://www.uispec4j.org/reports/apidocs/org/uispec4j/interception/WindowInterceptor.htmlを参照し、init\process シーケンスでモーダル ダイアログをキャプチャするために init を使用することをお勧めします。
非モーダルをキャプチャするには、次を使用することをお勧めします。
Window window = WindowInterceptor.run(panel.getButton("open").triggerClick());
しかし、私はそれをどこでどのように呼ぶべきかわかりません..
上記の最初の質問から、それに対する答えが外部アプリケーションである jnlp アプリケーションの起動に言及しているため、それを行うことができるはずです。
jre 6 update 0 で試してみましたが、少なくともテストを実行できます。Java update 37 では、上記で言及した 3 番目の質問から、抽象メソッドが実装されていないというエラーが発生します。
私は何を間違っていますか?何か案が?
最新の UISpec4J パッケージ - バージョン 2.4 を使用しています。
前もって感謝します、-ニール。