Как обнаружить всплывающие уведомления Javascript в WatiN?

У меня есть, кажется, довольно распространенный сценарий, который я пытаюсь проработать.

У меня есть сайт, который принимает ввод через два разных текстовых поля. Если ввод неверен или недействителен, я получаю всплывающее уведомление Javascript.

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

Как я могу обнаружить это в WatiN?

Быстрый поиск в Google дал результаты, которые показывают, как их просмотреть, но мне любопытно, могу ли я определить, когда я его получаю?

На случай, если кому-то интересно, я использую WatiN для очистки экрана вместо тестирования интеграции :)

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

Ян


person Ian P    schedule 19.04.2010    source источник


Ответы (1)


Вот что я придумал.

Я прочитал этот вопрос несколько раз, прежде чем придумал очевидное решение ..

Могу ли я прочитать окно предупреждения JavaScript с помощью WatiN?

Это код, который я придумал ... Хотя он вызывает задержку в 3 секунды, если предупреждение не появляется, он отлично работает для моего сценария.

Надеюсь, кто-то еще сочтет это полезным ...

frame.Button(Find.ByName("go")).ClickNoWait();

System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();

while (stopwatch.Elapsed.TotalMilliseconds < 3000d)
{
    if (alertDialogHandler.Exists())
    {
        // Do whatever I want to do when there is an alert box.
        alertDialogHandler.OKButton.Click();
        break;
    }
}
person Ian P    schedule 19.04.2010
comment
Где / как был создан экземпляр alertDialogHandler? - person Jesse Webb; 12.08.2011
comment
Вы должны иметь возможность избежать использования кода таймера StopWatch, используя .WaitUntilExists(); вместо вашей if проверки, чтобы увидеть, существует ли он. - person Jesse Webb; 12.08.2011
comment
Самая большая проблема с WaitUntilExists - это событие, когда предупреждение никогда не происходит. Секундомер с clicknowait стал для меня отличным решением. - person nikolifish; 31.12.2014