Проблема с WatiN и IE9 в отношении нескольких диалогов - PullRequest
2 голосов
/ 14 июня 2011

Я использую последнюю сборку WatiN от 4.12.2011 (2.1.0.1196).

У меня есть страница aspx, загруженная в IFrame в Dynamics Crm.На странице есть кнопка, которая открывает модальную диалоговую форму.Пока что большинство тестовых случаев работают правильно с WatiN за исключением конкретного варианта использования.

Если в модальном диалоговом окне задана определенная комбинация элементов управления, появится диалоговое окно подтверждения после того, как пользователь нажмет кнопку отправки.Если пользователь выберет «ОК», он продолжит выполнение отправки, а после отмены вернется в модальное диалоговое окно.Время ожидания теста истекает, когда появляется это диалоговое окно подтверждения.Кажется, я не могу правильно настроить обработчик, чтобы перехватить диалоговое окно подтверждения.

Вот метод испытания, который я пробовал:

    [TestMethod]
    public void Add_New_Post_To_Record_Public_NotOnBehalf_NoSub_No_Notifications()
    {
        using (var browser = new IE("URL to the IFRAME"))
        {                
            var approveConfirmDialog = ReturnDialogHandler.CreateInstance(); 
            var confirmCode = Guid.NewGuid();

           //logon to CRM
            logonToADFS(browser);

            var recordPage = browser.Page<DiscussionRecordpage>();
            recordPage.CreateNewPostButton.ClickNoWait();

            HtmlDialog dialog = browser.HtmlDialog(Find.ByTitle("New Post"));
            var messageText = dialog.TextField(Find.ByClass("required"));
            messageText.TypeText("Type some text. Confirmation code: " + confirmCode.ToString());

            var button = dialog.Button(Find.ByClass("submit-button"));

            using (new UseDialogOnce(browser.DialogWatcher, approveConfirmDialog))
            {
                button.ClickNoWait();
                approveConfirmDialog.WaitUntilExists();
                approveConfirmDialog.OKButton.Click();
            }
            browser.WaitForComplete();

            Assert.IsTrue(browser.ContainsText(confirmCode.ToString())); 
        }
    }

Я пробовал несколько разных вариантов стот же результат.Я предполагаю, что мне нужно использовать метод ReturnDialogHanlder.CreateInstance () для совместимости с IE9, но стандартный ConfirmDialogHandler, похоже, тоже не работает.Честно говоря, я не знаю, правильно ли я использую обработчик диалогов в этом случае, но я могу нажимать кнопки «ОК» в других диалоговых окнах подтверждения, которые появляются из кнопок на других страницах.Это немного уникально, так как он порождается из модального диалога вместо страницы.

Я также пытался использовать этот пользовательский обработчик ( C # WatiN - Добавить AlertDialogHandler, чтобы нажимать кнопку ОК в каждом диалоговом окне оповещения) безрезультатно.

Заранее спасибо.

1 Ответ

2 голосов
/ 21 июня 2011

Это слишком сложно.Я предлагаю обходной путь: в большинстве случаев вы можете закрыть диалог, используя клавиатуру.так что вы можете sendkeys , чтобы закрыть диалоговое окно.Просто к вашему сведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...