Транспортир: ошибка при ожидании синхронизации Транспортира со страницей: «и angularJS тестируемость, и угловая тестируемость не определены - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь написать какие-то сквозные тесты и хотел использовать async и await.

файл конфигурации

exports.config = {
    framework: 'jasmine',
    seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: ['spec.js'],
    SELENIUM_PROMISE_MANAGER: false,
    getPageTimeout: 10000,
    multiCapabilities: [
        {
            browserName: 'firefox'
        }, {
            browserName: 'chrome'
        }
    ]
}

файл спецификации

    describe('home-view', function(){

    beforeEach(async function(){

        await browser.get('http://localhost:49335/index.html#!/home');

    });

    it('sorted by firstname', async function(){

        await element(by.css("[ng-click=\"sortData('firstname')\"]")).click();
        var firstname = element.all(by.repeater('a in emps')).all(by.css('td'));     
        expect(await firstname.get(0).getText()).toEqual('abraham');

    });

})

Ошибка Ошибка при ожидании синхронизации транспортира со страницей: «и angularJS тестируемость, и угловая тестируемость не определены.Это может быть связано либо с тем, что это неугловая страница, либо с тем, что ваш тест включает в себя навигацию на стороне клиента, которая может помешать начальной загрузке Protractor. "

Почему я получаю эту ошибку?Спасибо

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Дайте getPageTimeOut более 20 секунд.Используйте явное ожидание, например browser.sleep (2000) после метода browser.get.Произошла ошибка, возможно, из-за медленного ответа от веб-страницы, а также использовать dirctConnect вместо seleniumAddress.

0 голосов
/ 04 марта 2019

Вы получили эту ошибку, потому что транспортир по умолчанию загружает угловую страницу.Если вы работаете с не угловым, вы должны добавить await browser.waitForAngularEnabled(false); к onPrepare блоку:

 onPrepare: async () => {
 ...
 await browser.waitForAngularEnabled(false);
 ...  

Как работает этот механизм «ожидания»?Я скопирую описание из кода:

 /**
     * If set to false, Protractor will not wait for Angular $http and $timeout
     * tasks to complete before interacting with the browser. This can cause
     * flaky tests, but should be used if, for instance, your app continuously
     * polls an API with $timeout.
     *

Итак, как вы можете видеть, это все о $http и $timeout задачах.Чаще всего разработчики используют его не правильно.

В заключение, если вы видите такую ​​ошибку:

both angularJS testability and angular testability are undefined

вы должны добавить await browser.waitForAngularEnabled(false);.

...