У меня есть сайт с выпадающим списком.Когда пользователь изменяет выпадающий список, появляется диалоговое окно подтверждения, спрашивающее их, хотят ли они изменить его.Если они нажимают «да», он продолжается, в противном случае он остается прежним.Довольно стандартные вещи.
Однако, когда я приступил к написанию модульного теста Watin, это была боль.
Мой HTML - простой список выбора с идентификатором _stateList
Это мой javascript:
$(function() {
$('#_stateList').change(function() {
if(confirm('Are you sure you wish to change your state?'))
//do something
});
});
Итак, в Watin у меня есть метод расширения для запуска события изменения:
public static void SelectWithChangeEvent(this SelectList selectList, string text)
{
selectList.Select(text);
string js = string.Format("$('#{0}').change();", selectList.Id);
InternetExplorer.Browser.Eval(js); //This is where it hangs
}
Этот метод расширения вызывается здесь:
ConfirmDialogHandler dialogHandler = new ConfirmDialogHandler();
using (new UseDialogOnce(InternetExplorer.Browser.DialogWatcher, dialogHandler))
{
PageMapping.StateDropdown.SelectWithChangeEvent(stateName); //It never gets past here
dialogHandler.WaitUntilExists(5);
if(dialogHandler.Exists())
dialogHandler.OKButton.Click();
else
Assert.Fail("No Dialog Appeared");
}
Я действительно надеюсь, что это не слишком много кода, но я просто не могу понять, как обрабатывать диалог, который запускается в событии изменения, а не в событии щелчка.В Watin кнопки имеют ClickNoWait ().Есть ли что-нибудь подобное для Select?Или Эвал?Или, может быть, настройка, которая говорит, не ждать вообще?
Любая помощь приветствуется.