Проблема с новой функцией для IE в финале WatiN 2.0 - PullRequest
1 голос
/ 12 марта 2011

В окончательном выпуске 2.0 WatiN было объявлено о новой функции для Internet Explorer:

"WatiN теперь будет ждать, пока IE и документ DOM перейдут в" интерактивный "или" готовый "состояние, чтобы избежать ненужных тайм-аутов "

На самом деле, в моем проекте нам нужно использовать старую функциональность для существующих тестов, когда WatiN ожидает только состояние" готов "(насколько я понимаю, это полная загрузкавеб-страница).На данный момент многие тесты провалились.

Основная проблема заключается в том, что WatiN пытается найти и манипулировать элементами, которые еще не загружены после некоторого действия (например, нажать на кнопку)

IsМожно ли переключить новую версию WatiN на старый принцип работы?

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Попробуйте этот метод расширения

public static void WaitForReady(this Browser browser)
{
    int timeWaitedInMilliseconds = 0;
    var maxWaitTimeInMilliseconds = Settings.WaitForCompleteTimeOut * 1000;

    while (browser.Eval("document.readyState") != "complete" && timeWaitedInMilliseconds < maxWaitTimeInMilliseconds)
    {
        Thread.Sleep(Settings.SleepTime);
        timeWaitedInMilliseconds += Settings.SleepTime;
    }
}
0 голосов
/ 23 марта 2011

Мне кажется, у меня та же проблема.Улучшения скорости в новом Watin, однако, являются фантастическими!

Загрузка страницы и выполнение чего-то вроде

foreach(TextField t in browser.TextFields) {
t.setAttribute("value","test");
}

Дает мне несанкционированное исключение системы с новым Watin примерно в 1/10 раз,Когда это происходит, browser.text возвращает ""

, поэтому я думаю поиграть с чем-то вроде

while(browser.text=="") {
System.Thread.Thread.Sleep(500);
}

(с перерывом в случае, если на странице фактически нет текста).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...