Cannot get automation extension [Protractor]

Всем большой привет. Юзаю Protractor, возникла проблема, при старте тестов в консоль начала падать ошибка:

Failed: unknown error: cannot get automation extension
    from unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html
      (Session info: chrome=57.0.2987.133)
      (Driver info: chromedriver=2.26.436421 (6c1a3ab469ad86fd49c8d97ede4a6b96a49ca5f6),platform=Mac OS X 10.12.2 x86_64)

Погуглив, нашел что данная ошибка возникает из-за метода

browser.driver.manage().window().setSize(width, height);

Решается обновлением chromedriver до 2.28, я обновил но ошибка все равно возникает из-за того что протркатор юзает версию 2.26.

Вопрос: откуда он берет версию 2.26 если я обновил до 2.28, благодарю за Ваши ответы.

зависит от того как вы запускаете селениюмъ
если через webdriver-manager то его конфигурация здесь
https://github.com/angular/webdriver-manager/blob/master/config.json

Мне кажется проблема в том что вы обновляете глобальный npm package, и для тестов используете локальный.

https://docs.npmjs.com/getting-started/installing-npm-packages-globally
https://docs.npmjs.com/getting-started/installing-npm-packages-locally

Убедитесь что вы вызываете правильный webdriver-manager update

1 лайк

Можете добавить в ваш package.json такие скрипты

"scripts": {
    "postinstall": "webdriver-manager update",
    "test": "protractor protractor.conf.js"
  },

И тогда после npm install ваш локальный webdriver-manager тоже обновится и при запуске npm test запустится тоже локальный protractor.

1 лайк

Тут нужно уточнить что в этих npm скриптах будет использоваться именно локальный протрактор, хотя выглядит как глобальный -
https://docs.npmjs.com/cli/run-script

In addition to the shell’s pre-existing PATH, npm run adds node_modules/.bin to the PATH provided to scripts. Any binaries provided by locally-installed dependencies can be used without the node_modules/.bin prefix. For example, if there is a devDependency on tap in your package, you should write:

“scripts”: {“test”: “tap test/*.js”}
instead of “scripts”: {“test”: “node_modules/.bin/tap test/*.js”} to run your tests.

Кстати по умолчанию протрактор ожидает файл конфигурации названный именно - protractor.conf.js - так что можно вызывать просто protractor без параметров прямо в npm скрипте чтобы запустить локальный протрактор с конфиг файлом protractor.conf.js

1 лайк