質問

私は、Selenium 2を使用してプロジェクトを実装していますが、現在はダイアログボックスの確認を非常によくサポートしていません。

この制限には回避策があります。window.confirmを上書きするだけで、特定のテストケースに返す必要がある値を返します。

次の文字列を設定してから実行できます。

public static final String CONFIRM_DIALOG_BOX = 
    "window.confirm = function(msg) { return true; }";

public static final String CANCEL_DIALOG_BOX = 
    "window.confirm = function(msg) { return false; }";

これはテンプレートメソッドとして非常に簡単に思えますが、同じページオブジェクトに複数のテストケースがあり、ページと対話した後に確認 /拒否する必要があります。したがって、これらすべてのテストを一度に実行する単一の方法を持つことは機能しません。

テスト方法に遭遇するコマンドを注入すると意味がありますが、ここでの私の最終目標は、少ない技術スタッフがXMLにいくつかの文字列を書き、スプリング式の言語で実行することでテストを作成できるようにすることです。これにより、テストの作成から「容易さ」の一部が削除されます。

主な警告は、このテストスイートは、実際には要件が原因でアプリケーションであり、個別に実行される一連のテストケースではないことです。抽象的なテストケースを拡張し、同じセットアップと分解ルーチンを利用できるため、小さなテストケースであればはるかに簡単です。

最終的に探しているのは、このテンプレートメソッドに沿ったものですが、単一のページオブジェクトで複数のテストケースをサポートできる必要があります。

public final void executeTest(boolean confirmDialogBoxResponse) {

    // store normal functionality and allow us to return 
    // window.confirm to normal state upon completion of test.
    prepare(confirmDialogBoxResponse);

    testMethod(); // What about params to these methods?

    /* Adding an interface to the method would be nice, but 
     * would make things a bit more cumbersome for our
     * less technical staff, which would allow me to replace
     * the above with this:
     *
     *    executeTest(TestCommand command, confirmDialogResponse);
     *         command.execute(); // Still have params issue
     */

    // restore window.confirm to normal state -- if we cancel we stay 
    // on same page, and need to restore things as they were, the majority
    // of our confirm cases take you to new pages whereby window.confirm 
    // will be restored for us
    if (!confirmDialogResponse) {
        restore();
    }
}
役に立ちましたか?

解決

を見たことがありますか Selenium Issue#27最近(コメント#46)?アラートと確認のサポートを提供するいくつかのパッチが添付されていますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top