Ошибка истекло время ожидания транспортира для синхронизации со страницей через 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