WatiN за рулем IE "Вы уверены, что хотите покинуть эту страницу?" неожиданно возникнуть - PullRequest
5 голосов
/ 15 февраля 2012

Я бы хотел расширить свои автоматические тесты WatiN, чтобы управлять страницей, которая защищает пользователя от случайного ухода страницы без сохранения изменений.

На странице используется метод «beforeunload» для получения подтверждения от пользователя:

$(window).bind('beforeunload', function (event) {
    if (confirmationRequired) {
        return "Sure??";
    }
});

Мой тест WatIn управляет страницей с помощью IE.Я не могу найти способ подключить WatIn к всплывающему диалоговому окну, чтобы я мог управлять им из своего теста.

Не удалось выполнить все последующее (где жестко запрограммированные строки ссылаются на строки, которые я вижу навсплывающее окно):

Browser.AttachTo<IE>(Find.ByTitle("Windows Internet Explorer");
browser.HtmlDialog(Find.FindByTitle("Windows Internet Explorer));
browser.HtmlDialog(Find.FindByTitle("Are you sure you want to leave this page?));
browser.HtmlDialog(Find.FindFirst());

Спасибо!

1 Ответ

9 голосов
/ 16 февраля 2012

Вам нужно будет создать и добавить обработчик диалогов.

Пример Перейти на пример сайта, щелкнуть ссылку, нажать покинуть страницу в диалоговом окне подтверждения:

IE browser = new IE();
browser.GoTo("http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm");

WatiN.Core.DialogHandlers.ReturnDialogHandlerIe9 myHandler = new WatiN.Core.DialogHandlers.ReturnDialogHandlerIe9();

browser.AddDialogHandler(myHandler);
browser.Link(Find.ByUrl("http://www.microsoft.com")).ClickNoWait();
myHandler.WaitUntilExists();

myHandler.OKButton.Click();
browser.RemoveDialogHandler(myHandler);

Выше работает на WatiN2.1, IE9, Win7. Если вы используете IE8 или более раннюю версию, вам, вероятно, потребуется использовать объект ReturnDialogHandler вместо специального обработчика Ie9

...