Ошибка истекло время ожидания транспортира для синхронизации со страницей через 11 секунд

У меня проблема с моими тестами транспортира. Мое угловое приложение использует $timeout для непрерывного опроса чего-либо с сервера. К сожалению, это приводит к следующему сообщению об ошибке при выполнении моих тестов:

 There was a webdriver error: Error Timed out waiting for Protractor to synchronize with the page after 11 seconds. Please see https://github.com/angular/protrac
tor/blob/master/docs/faq.md

Как я могу справиться с такими непрерывными тайм-аутами опроса? Настройка browser.ignoreSynchronization в false не является хорошим решением в моем случае (когда я делаю это, я должен вставить много browser.sleep())

Переключение с $timeout на $interval, как предлагается здесь, в настоящее время невозможно в моем приложении. Увеличение таймаута также невозможно (как я уже говорил, служба постоянно опрашивает что-то с сервера)

Есть ли возможность изменить waitForAngular рутина, чтобы мой тест не остановился?

Любая помощь будет высоко оценена.

4 ответа

Из документации транспортира:

Перед выполнением какого-либо действия Protractor просит Angular подождать, пока страница не будет синхронизирована. Это означает, что все таймауты и http-запросы завершены. Если ваше приложение постоянно опрашивает $ timeout или $ http, оно никогда не будет зарегистрировано как полностью загруженное. Вы должны использовать службу $ interval ( interval.js) для всего, что опрашивает непрерывно (введено в Angular 1.2rc3).

Та же лодка с тобой.

Мы видели много постов, обсуждающих sleep(), waitForAngular()а также browser.ignoreSynchronization,

Я согласен с вами, что это не очень хорошая идея: ignoreSynchronization = true, так как это заставляет нас ждать каждого асинхронного процесса вручную.

Некоторые предложили использовать sleep() а потом waitForAngular() вместе, как это:

browser.sleep(10000);
browser.waitForAngular();

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

Пожалуйста, посмотрите, работает ли это в вашем случае.

Добавить allScriptsTimeout: 50000 в конфигурационном файле транспортира

exports.config = {
    ...
    allScriptsTimeout: 50000,
    ...
};

или, по крайней мере, это решило мою проблему

Изменение значения allScriptsTimeout на большее, чем 11000 тысяч, решило мою проблему

Тайм-аут в ожидании транспортира...

В файле node_modules/protractor/lib/configParser.js изменилось:

allScriptsTimeout: 25000

Другие вопросы по тегам