Как я могу надежно ждать предупреждений JavaScript с помощью Selenium2 / WebDriver?

В настоящее время я помогаю в проверке концепции с использованием Selenium 2 / WebDriver с C# против ASP.NET MVC приложения с использованием InternetExplorerDriver.

Приложение использует стандартный шаблон для уведомления пользователей о том, что запись была сохранена. Это работает путем настройки TempData на "Record saved successefully", и если TempData присутствует в представлении, то представление выдаст сообщение.

Во время работы над Selenium тестами для этой функциональности, мы получаем непостоянное поведение от приведенного ниже кода теста C# / Selenium:

        _driver.Navigate().GoToUrl(_baseUrl + "/Amraam/List");
        _driver.FindElement(By.LinkText("Create New")).Click();

        _driver.FindElement(By.Id("txtAmraamSerialNumber")).SendKeys("CC12345");

        var selectElement = new SelectElement(_driver.FindElement(By.Id("LocationId")));
        selectElement.SelectByText("Tamworth");
        _driver.FindElement(By.Id("btnSave")).Click();
        var wait = new WebDriverWait(_driver, defaultTimeout);
        IAlert alert = wait.Until(drv => drv.SwitchTo().Alert());
        _alertText = alert.Text;

        alert.Accept();
        Assert.That(_alertText, Is.EqualTo("Record successfully saved")); 

Примерно в 50% случаев Selinium дает сбой с

OpenQA.Selenium.NoAlertPresentException: No alert is active

Я пытаюсь найти точный способ воспроизвести эту проблему, и беспокоюсь о непоследовательности. Если бы это происходило постоянно, тогда мы могли бы отладить и отследить проблему.

11
задан Paul Williams 29 November 2011 в 12:17
поделиться