Транспортир - невозможно прочитать свойство «$ $ testability» неопределенного

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

"Error while waiting for Protractor to synce with the page: "Cannot read property '$$testability' of undefined"

Ниже мой тест.

describe('On the MyMoments page', function(){  

    beforeEach(function() {
        var editLocationText = 'Location';

        browser.driver.get('http://192.168.0.6:8100/#/page1/myMoments');
    });

    it('The edit button should work', function() {
        browser.driver.get('http://192.168.0.6:8100/#/page1/myMoments').then(function() {
            // browser.waitForAngular();
            browser.getCurrentUrl().then(function(url) {

            });
        });


    });
});

Это мой файл конфигурации:

exports.config = {  
    capabilities: {
        'browserName': 'chrome',
        'chromeOptions': {                
            args: ['--disable-web-security']
        } 
    },
    baseUrl: 'http://192.168.0.6:8100',
    specs: [
    '*.test.js'
    ],
    jasmineNodeOpts: {
        isVerbose: true,
    }
};

Я не думаю, что это как-то связано с моим тестом, так как мой тест невероятно прост. Кто-нибудь сталкивался с этой проблемой раньше? Я немного застрял.

Спасибо.

РЕДАКТИРОВАТЬ:

Понизил версию Protractor до 4.0.14, чтобы исправить эту ошибку. Теперь я получаю:

"Failed: Error while waiting for Protractor to sync with the page: "[ng:test] no injector found for element argument to getTestability/http://errors.angularjs.org/1.5.3/ng/test"

Если кто знает что это или как решить, дайте знать!

Спасибо.


person MatTaNg    schedule 10.05.2017    source источник


Ответы (4)


Это известная проблема в Protractor, см. здесь. Как упоминалось в проблеме, это связано с тем, что ожидается, что browser.angularAppRoot() вернет текущее значение корня приложения, если значение не передано ему, но в настоящее время возвращает значение undefined. Грядет новый релиз, который должен решить эту проблему.

Надеюсь, поможет

person wswebcreation    schedule 10.05.2017
comment
Есть ли какое-то временное решение? Мои тесты Protractor просто сломаны, пока они не выйдут с этим патчем? - person MatTaNg; 10.05.2017
comment
Какую версию Protractor вы используете? Возможно, вы можете понизить версию (патч или дополнительную версию) - person wswebcreation; 10.05.2017
comment
Я прошел весь путь до версии 4.0.14, и я начал получать Failed: Error при ожидании синхронизации Protractor со страницей: [ng:test] не найден инжектор для аргумента элемента для getTestability/errors.angularjs.org/1.5.3/ng/test - person MatTaNg; 11.05.2017
comment
По иронии судьбы я только что обновил Protractor и Selenium, чтобы исправить ошибку в последней версии Firefox. Становится невозможным найти правильную комбинацию, чтобы эта штука работала. - person Eric Soyke; 11.05.2017
comment
Ошибка транспортира была исправлена ​​в 5.1.2. Если вы все еще получаете эту ошибку, это, вероятно, связано с другой основной проблемой, из-за которой ваша страница остается пустой в то время, когда Protractor ее видит. Смотрите ответ ниже. - person emery; 11.10.2017

Хотя это иногда вызывается документами без тега html в корне, «Не удается прочитать свойство $$testability неопределенного», скорее всего, проявляется как симптом другой ошибки, препятствующей загрузке страницы, или какому-либо взаимодействию со страницей. который не загружается по какой-либо причине.

Попробуйте использовать browser.sleep над строкой, которая выдает ошибку, чтобы дать странице время для загрузки.

Предложение browser.ExpectedConditions, предназначенное для ожидания определенного условия, может вызвать эту ошибку, если страница не готова для транспортира.

Иногда нельзя избежать жестко запрограммированного сна.

Чтобы диагностировать и исправить это,

  • Поместите browser.enterRepl(); в код непосредственно перед строкой, которая, кажется, выдает ошибку $$testability.
  • Если ошибка $$testability по-прежнему возникает, переместите browser.enterRepl(); вверх на несколько строк
  • Каждый раз, когда enterRepl() запускается без ошибки $$testability, перемещайте browser.enterRepl(); вниз на одну строку
  • Наконец, когда enterRepl перемещается в строку непосредственно под строкой, вызвавшей ошибку, теперь вы можете увидеть другое сообщение об ошибке, которое имеет больше смысла.
  • Поместите browser.sleep() или другой код, чтобы исправить вашу конкретную проблему, непосредственно перед строкой, вызывающей эту ошибку.
person emery    schedule 10.10.2017

Смена браузера с хрома на файрфокс мне помогла.

// conf.js
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
  capabilities: {
  'browserName': 'firefox'
},
specs: ['login-spec.js']
}
person SriBalaji P    schedule 04.10.2017

У меня была такая же проблема с гибридным приложением Angular. В моем случае проблема была устранена после удаления,

rootElement: 'myRootElement'

из конфига.

person Koga    schedule 13.11.2018