Другим вариантом может быть использование AlertAndConfirmDialogHandler. Этот обработчик закрывает каждое всплывающее окно предупреждения или подтверждения, но сначала он получает текст, отображаемый диалоговым окном, и сохраняет его. Вы можете проверить этот строковый массив Alerts и посмотреть, равен ли счетчик нулю. Вы можете сделать это в Teardown или FixtureTeardown тестового класса.
После получения копии теста от юнит-теста WatiN, чтобы показать вам, как вы можете использовать этот обработчик:
[Test]
public void AlertAndConfirmDialogHandler()
{
DialogWatcher dialogWatcher;
Assert.AreEqual(0, Ie.DialogWatcher.Count, "DialogWatcher count should be zero before test");
// Create handler for Alert and confirm dialogs and register it.
var dialogHandler = new AlertAndConfirmDialogHandler();
using (new UseDialogOnce(Ie.DialogWatcher, dialogHandler))
{
Assert.AreEqual(0, dialogHandler.Count);
Ie.Button("helloid").Click();
Assert.AreEqual(1, dialogHandler.Count);
Assert.AreEqual("hello", dialogHandler.Alerts[0]);
// remove the alert text from the queue by using Pop
Assert.AreEqual("hello", dialogHandler.Pop());
Assert.AreEqual(0, dialogHandler.Count);
// Clear the queue
Ie.Button("helloid").Click();
Assert.AreEqual(1, dialogHandler.Count);
dialogHandler.Clear();
Assert.AreEqual(0, dialogHandler.Count);
dialogWatcher = Ie.DialogWatcher;
}
Assert.AreEqual(0, dialogWatcher.Count, "DialogWatcher count should be zero after test");
}
Это также побуждает меня сделать поведение AutoClose более подключаемым. Было бы хорошо, если бы можно было зарегистрировать обработчик диалогов, который будет вызываться, если никакие другие обработчики не смогут обработать диалог, вместо того, чтобы просто автоматически закрывать диалоги.
НТН
Йерун ван Менен
ведущий разработчик WatiN