Protractor «Ошибка при ожидании синхронизации Protractor со страницей» при просмотре сайта Angular - PullRequest
3 голосов
/ 26 марта 2019

Я пытаюсь следовать руководству по транспортировке на Официальном сайте транспортировщиков , но я даже не могу выполнить шаг 0.

В версии я использую Protractor & webdriver-manager6.0.0.Мой SO - это Linux (Ubuntu 18.06), а мой Chrome - последний доступный (73.0.3683.86).После установки транспортира мне пришлось понизить версию хромедрайвера, установленного по умолчанию, поскольку он ожидал, что у меня будет Chrome 74. Я понизил его, выполнив webdriver-manager --versions.chrome 73.0.3683.68.

После этого я следовал шагу 0 учебника.У меня есть файл configuration.js и файлы test-spec.js:

configuration.js

 exports.config = {
      seleniumAddress: 'http://localhost:4444/wd/hub',
      specs: ['test-spec.js']
    };

test-spec.js

describe('Protractor Demo App', function() {
    it('should have a title', function() {
        browser.get('http://juliemr.github.io/protractor-demo/');
        expect(browser.getTitle()).toEqual('Super Calculator');
    });
});

Когда я запускаю Protactor protractor configuration.js, я получаю следующую ошибку:

[15:15:13] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
DEPRECATION: Setting randomizeTests directly is deprecated, please use the random option in `configure`
DEPRECATION: Setting specFilter directly on Env is deprecated, please use the specFilter option in `configure`
Started
F

Failures:
1) Protractor Demo App should have a title
  Message:
    Expected [object Promise] to equal 'Super Calculator'.
  Stack:
    Error: Expected [object Promise] to equal 'Super Calculator'.
        at 
        at UserContext. (/home/srubio/Escritorio/Protractor/test-spec.js:5:32)
        at 

1 spec, 1 failure
Finished in 0.009 seconds
/home/srubio/n/lib/node_modules/protractor/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:3190
        throw arguments[0];
        ^

Error: Error while waiting for Protractor to sync with the page: "both angularJS testability and angular testability are undefined.  This could be either because this is a non-angular page or because your test involves client-side navigation, which can interfere with Protractor's bootstrapping.  See http://git.io/v4gXM for details"
    at ProtractorBrowser. (/home/srubio/n/lib/node_modules/protractor/built/browser.js:354:27)
    at Generator.next ()
    at fulfilled (/home/srubio/n/lib/node_modules/protractor/built/browser.js:4:58)
    at processTicksAndRejections (internal/process/next_tick.js:81:5)

1 Ответ

5 голосов
/ 26 марта 2019

Обновление этого ответа

В версии транспортира 6.0 используется версия селена 4 , которая является первой версией селена, в которой прекращена поддержка потока управления,Поток управления позволил Protractor выполнять код, такой как

browser.get('http://google.com');
expect(browser.getTitle()).toEqual('Super Calculator');

, синхронно.

Поток управления использовался до сих пор для обработки асинхронного характера обещаний webdriverJS в удобной для пользователя форме.Как только стиль обработки обещаний es8 / await стал поддерживаться, однако было принято решение отказаться от потока управления и посоветовать пользователям использовать асинхронное / ожидание в будущем.


оригинальный ответ

6.0 - последняя версия Protractor, я полагаю, что она была выпущена 3 дня назад (около 22 марта / 19), и в ней отсутствует поддержка элемента управленияпоток, который ранее был включен по умолчанию.Очевидно, учебная документация не была обновлена, чтобы отразить это, однако, и я считаю, что именно поэтому вы видите эту проблему.

В дальнейшем вам нужно будет использовать синтаксис async / await (которыйна самом деле гораздо более читабелен и прост в использовании)

Попробуйте следующий код:

configuration.js

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['test-spec.js']
};

test-spec.js

describe('Protractor Demo App', function() {
    it('should have a title', async function() {
        await browser.get('http://juliemr.github.io/protractor-demo/');
        expect(await browser.getTitle()).toEqual('Super Calculator');
    });
});

Обновление: Если вы попытаетесь добавить SELENIUM_PROMISE_MANAGER: true, к вашему configuration.js, что может позволить вам продолжить работу с демонстрацией в том виде, как она естьнаписано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...