Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Проблема с WatiN и IE9 относительно нескольких диалогов

Автор вопроса: Bryan WeaverОтветов: 1

Я использую последнюю сборку WatiN от 12.04.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, чтобы нажимать кнопку ОК в каждом диалоговом окне предупреждения) безрезультатно.

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

integration-testinginternet-explorer-9watin

Ответы

Ответ 1 · рейтинг 2 · Peter Long

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы