Какой шаблон я могу использовать? - PullRequest
0 голосов
/ 11 ноября 2010

Я реализую проект с 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, а затем выполняя его с помощью Spring Expression Language; это устраняет некоторую «легкость» написания тестов.

Главное предостережение в том, что этот набор тестов фактически является приложением из-за требований, а не набора тестовых случаев, которые выполняются индивидуально. Было бы намного проще, если бы это были небольшие тестовые наборы, поскольку я мог бы просто расширить абстрактный тестовый пример и использовать те же процедуры настройки и демонтажа.

В конечном итоге я ищу что-то в этом методе шаблона, но мне нужно иметь возможность поддерживать несколько тестовых случаев на одном объекте страницы.

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();
    }
}

1 Ответ

0 голосов
/ 12 ноября 2010

Вы недавно смотрели на Selenium Issue # 27 (комментарий № 46) ? К нему прикреплены некоторые исправления, обеспечивающие поддержку оповещения и подтверждения?

...