Транспортир: Сбой: истекло время ожидания завершения асинхронных угловых задач через 11 секунд

Я получаю ниже ошибки:

Ошибка: истекло время ожидания завершения асинхронных угловых задач через 11 секунд. Это может быть потому, что текущая страница не является угловым приложением

Я видел похожий вопрос, но ни у одного из них нет хорошего решения

работает над Angular 4

Моя настройка:
1) onBeforeLaunch: я использую webdrive и chromedriver для получения токена для аутентификации

beforeLaunch(){

    const webdriver = require('selenium-webdriver');
    const chrome = require('selenium-webdriver/chrome');
    const path = require('chromedriver').path;
// do stuff like get token save it in variable
driver.quit();
}

2) на подготовить

browser.params.tokens = токен до запуска

3)

it('should authenticate',() => {
       browser.get('/home?'+browser.params.token)
       expect(browser.getCurrentUrl()).toContain('home');
})

на 3-м шаге его ошибка подачи.

PS: я попробовал несколько вариантов, как ignoreSync, waitforangularenabled, сон ничего не работает, может кто-то указать мне, что я делаю здесь неправильно

1 ответ

Здесь может быть проблема, вызванная конкретной структурой вашего приложения. Поскольку по умолчанию Protractor ожидает вашего приложения Angular, пока Angular не перейдет в так называемый "спокойный режим"

Перед выполнением какого-либо действия Protractor ждет, пока в приложении Angular не будет отложенных асинхронных задач. Это означает, что все таймауты и http-запросы завершены. - это "спокойный режим"

Многие люди сталкиваются с этим, вы можете увидеть много вопросов о StackOverFlow, давным-давно я тоже задавал этот вопрос, а затем мы решили эту проблему с моей командой.

Во-первых, прочитайте его, чтобы узнать основу: https://github.com/angular/protractor/blob/master/docs/timeouts.md

В свою очередь, я предложу вам 2 варианта, из которых вам нужно выбрать один.

  1. В местах, где тест падает waitForAngularEnabled(false); и после некоторых действий (которые вы определите во время тестирования) верните его, поместив ту же строку кода с логическим значением true

    waitForAngularEnabled(true)

Это означает, что вы приказали вашему транспортиру не ждать, пока Angular перестанет работать, и продолжите его работу, а затем в какой-то момент, когда вы узнаете, что Angular снова останавливает свою работу, вы снова включаете этот параметр, и Protractor снова будет ждать Angular., Но это может быть не единственное место, где это может произойти, и если это так, вам нужно перейти к варианту 2

  1. Чтобы обсудить с вашими разработчиками изменение приложения, чтобы Protractor мог работать без препятствий. PS Это то, что я сделал в своей команде, и они исправили приложение, чтобы тесты Protractor работали без сбоев.
Другие вопросы по тегам