Я использую комбинацию SpecFlow, MSTests для модульного тестирования и WatiN для управления браузером для тестирования нашего веб-приложения.Как найти оповещение JavaScript, которое уже открыто с WatiN
- Visual Studio 2010
- проект класса стиль Библиотека
- SpecFlow
- MS Test
- WatiN
Если пользователь отправляет наши формы без заполнения всех необходимых полей а JavaScript alert
всплывает. Я пытаюсь обнаружить это всплывающее окно с помощью WatiN. Шаг SpecFlow, который запускает предупреждение, отличается от шага SpecFlow, который утверждает, что всплывающее окно существует, поэтому ожидание обработчика диалога WatiN не работает, так как предупреждение уже открыто.
Пример SpecFlow Сценарий:
Scenario: Form Fields are required
# This step spawns the alert dialog
When I click the "Save and Continue" button
# Test fails here because the alert is already open
Then I should see the validation error alert
Определение шага для When I click the "Save and Continue" button
[When(@"I click the ""(.*)"" button")]
public void WhenIClickTheButton(string buttonText)
{
Button button = BitWeb.Browser.Button(Find.ByValue(buttonText).Or(Find.ByText(buttonText)));
Assert.IsTrue(button.Exists, "No button with text '{0}' was found", buttonText);
button.Click();
browser.WaitForComplete();
}
Определение шага для Then I should see the ... alert
:
[Then(@"I should see the validation error alert")]
public void ThenIShouldSeeTheValidationErrorAlert()
{
var alert = new WatiN.Core.DialogHandlers.AlertDialogHandler();
alert.WaitUntilExists();
StringAssert.Contains(alert.Message, "An error has occurred. Check entire", "The validation error alert was not visible.");
}
Вызова alert.WaitUntilExists();
генерирует исключение:
WatiN.Core.Exceptions.WatiNException: Диалог недоступен в течение 30 секунд.
К тому времени, когда я утверждаю, что диалоговое окно оповещения видимо, DialogHandler не находит предупреждение, поскольку оно уже открыто.
Как найти диалоговое окно предупреждения, которое уже открыто с помощью WatiN?
Update # 1: Я склоняюсь к решению, которое использует ScenarioContext.Current
объект, я просто не знаю, как подключить все вместе, чтобы браузер не ждать в течение 30 секунд каждый раз, когда он нажимает на кнопку просто чтобы увидеть, появляется ли окно предупреждения.
Обновление № 2: После некоторого исследования нажатие кнопки на одном шаге заставляет весь тестовый фрейм паузы до тех пор, пока диалог alert
не будет удален. Щелчок по кнопке «ОК» отклонил диалоговое окно, которое позволило победителю теста перейти к следующему шагу, на котором я утверждаю, что диалоговое окно видно - сценарий с курицей или яйцом. Вызов button.ClickNoWait()
исправил проблему.
Почему downvote? –
Диалог html-диалог (тип jquery) или это фактическое всплывающее диалоговое окно (win32)? – ProgrammerV5
Это диалоговое окно 'alert (" message ")'. –