Подтвердить что ты не робот

Транспортир/селен "не смог найти хромированный реверс" (в Windows)

Я установил транспортир после этот учебник, и когда я использую обновление webdriver-manager, он говорит:

selenium standalone is up to date.
chromedriver is up to date.

Когда я пытаюсь запустить тесты транспортира, он говорит:

C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\local.dp.js:42
            throw new Error('Could not find chromedriver at ' +
                  ^
    Error: Could not find chromedriver at C:\Users\****\AppData\Roaming\npm\node_modules\protractor\selenium\chromedriver.exe
        at LocalDriverProvider.addDefaultBinaryLocs_ (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\local.dp.js:42:15)
        at LocalDriverProvider.setupEnv (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\local.dp.js:59:8)
        at Runner.run (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\runner.js:308:31)
        at process.<anonymous> (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\runFromLauncher.js:32:14)
        at process.EventEmitter.emit (events.js:98:17)
        at handleMessage (child_process.js:318:10)
        at Pipe.channel.onread (child_process.js:345:11)
    [launcher] Runner Process Exited With Error Code: 8

Я проверил local.dp.js и увидел, что он попытался загрузить хромированный рекордер из. \ node_modules\protractor\selenium\chromedriver, но там был только пустой почтовый файл с именем chromedriver_2.9.

Итак, я вручную загрузил хромированный указатель и скопировал его в это место, создав новую ошибку:

C:\Users\****\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1549
      throw error;
            ^
Error: Server exited with 1
    at Error (<anonymous>)
    at ChildProcess.onServerExit (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\remote\index.js:193:11)
    at ChildProcess.g (events.js:180:16)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at Process.ChildProcess._handle.onexit (child_process.js:797:12)
[launcher] Runner Process Exited With Error Code: 8

Любые идеи?

4b9b3361

Ответ 1

Если вы находитесь за прокси-сервером, попробуйте сначала установить прокси-сервер, а затем запустите обновление webdriver:

npm config set proxy http://<proxy.com>:port

webdriver-manager update

Ответ 2

Я тоже столкнулся с этой ошибкой, и к моменту, когда я прочитал учебник, он не рассказал о том, как установить транспортир и webdriver в качестве локальных зависимостей для вашего проекта (которые находятся в. / node_modules).

Если это то, что вы предпочитаете (вероятно, потому, что вы, возможно, захотите использовать grunt-protractor-runner и запустить свой тест позже в режиме непрерывной сборки, как мне нужно) вместо того, чтобы устанавливать его глобально, это решение сработало для меня:

  • Установите транспортир:

npm install protractor --save-dev

  1. Установите селен и веб-серверы с помощью администратора webdriver:

./node_modules/protractor/bin/webdriver-manager update

После вызова этой команды просмотрите ./node_modules/protractor и вложенные папки, чтобы проверить это. В нем должна быть доступна папка с именем selenium с chromedriver.

Обратите внимание, что поскольку транспортир не был установлен как "глобальный", вызов его из командной строки приведет к ошибке "commnad not found". Вместо этого вы можете запустить эту команду: ./node_modules/protractor/bin/protractor

Дополнительно, может быть хорошей идеей добавить определение script в ваш package.json, так что в следующий раз, когда вы установите все ваши зависимости с нуля, npm автоматически настроит webdrivers. Для этого добавьте это в свой файл package.json: "scripts": { "postinstall": "./node_modules/protractor/bin/webdriver-manager update" }

Надеюсь, это поможет вам дальше...

Ответ 3

Я следил за этим учебником и имел ту же проблему. Проблема здесь заключалась в том, что вам нужно указать путь к вашему selenium jar и chrome driver exe в файле конфигурации вашего транспортира. Mine была установлена ​​глобально в папке AppData, так что это выглядит как файл protractor.confg.js:

exports.config = {

specs: [
    'test/e2e/**/*.js'
],

chromeDriver: 'C:/Users/<username>/AppData/Roaming/npm/node_modules/protractor/selenium/chromedriver.exe',

seleniumServerJar: 'C:/Users/<username>/AppData/Roaming/npm/node_modules/protractor/selenium/selenium-server-standalone-2.40.0.jar',

baseUrl: 'http://localhost:9000/'

};

Казалось, что это трюк.

Ответ 4

Боже, так много ответов...

На Mac это работало для меня:

$ npm install chromedriver
$ ln -sf ~/angular-phonecat/node_modules/chromedriver/bin/chromedriver node_modules/protractor/selenium/chromedriver.exe

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

Ответ 5

Посмотрев вокруг какое-то время, я заметил, что package.json файл, включенный в angular phonecat repo, определяет задачу update-webdriver.

Запуск этой задачи (с npm run update-webdriver) фиксированным транспортиром для меня.

Ответ 6

Драйвер Chrome может существовать в любом месте, но бегун-транспортитор, похоже, ожидает, что он будет находиться в том месте, где он будет существовать, если вы установили его через "webdriver-manager". Таким образом, его можно установить с помощью "npm install chromedriver", который поместит его в другое место, например: /USR/ локальные/Library/ node_modules/chromedriver/Library/chromedriver/chromedriver

В этом случае необходимо будет настроить файл конфигурации в этом месте, но есть более простое решение...

Если webdriver-manager не может загрузить либо хромированный, либо селеновый-независимый, то в по умолчанию будут 0-байтовые файлы, что приведет к этой ошибке. К сожалению, это может произойти с проблемами, связанными с прокси. Как только поврежденные файлы есть, процесс проверки обновлений считает, что все обновлено, но это не так.

Кроме того, конфигурация прокси для webdriver-менеджера отличается от npm. Для webdriver-manager синтаксис для обновления:

sudo webdriver-manager update --proxy=http://<your proxy server>/

Удаление файлов с 0 байтами и повторное выполнение этой команды обновления должны заменить файлы на их правильные данные. Место на моей машине для этих файлов:

/usr/local/lib/node_modules/protractor/selenium

Ответ 7

Я столкнулся с подобной проблемой, когда я последовал за angular учебником:

https://docs.angularjs.org/tutorial/step_03

и проверили код соответственно:

git checkout -f step-3

Внутри angular -phonecat/package.json devDependencies версия protractor "~ 1.0.0", из-за которой npm всегда загружает поврежденный файл:

angular -phonecat/ node_modules/protractor/selenium/chromedriver_2.10.zip

Поскольку указанный выше zip файл не может быть открыт должным образом, значит, существует ошибка ниже:

/Users/karlli/DEV/проекты/angular -phonecat/node_modules/транспортир/node_modules/adm-zip/zipFile.js:66           throw Utils.Errors.INVALID_FORMAT;                             ^ Неверный или неподдерживаемый формат zip. Нет заголовка END

Существует 2 решения:

  • Вместо символа
  • укажите правильную ссылку

ln -sf ~/dev/projects/angular-phonecat/node_modules/chromedriver/bin/chromedriver node_modules/protractor/selenium/chromedriver.exe

Спасибо @bronson: -)

  1. версия зависимостей над транспортиром обновлений После нескольких тестов я нашел минимальную работоспособную версию 1.1.0.

angular -phonecat/package.json

"devDependencies": {
    "karma": "^0.12.16",
    "karma-chrome-launcher": "^0.1.4",
    "karma-jasmine": "^0.1.5",
    "protractor": "~1.1.0",
    "http-server": "^0.6.1",
    "tmp": "0.0.23",
    "bower": "^1.3.1",
    "shelljs": "^0.2.6"
},

Ответ 8

В моем случае это было связано с поврежденным zip файлом хромированного ребра.

Я решил сделать следующее для решения этой проблемы.

  • Скачан хромированный zip из Страница загрузки ChromeDriver

  • Извлечен этот zip файл в "node_modules\protractor\selenium \" (т.е. скопирован "chromedriver.exe" в это место)

Затем он начал работать как ожидалось. Надеюсь, это поможет вам.

Ответ 9

Если в Windows вам может потребоваться установить переменную среды HTTP_PROXY. Попробуйте выполнить эти шаги в командной строке, если ваш прокси-сервер http://proxy.you.com:8080.

  • SETX HTTP_PROXY http://proxy.you.com:8080 (Он должен вернуть SUCCESS: указанное значение было сохранено. Вы также можете сделать это в свойствах System... Advanced... Environment Variables)
  • Закройте окно командной строки и закройте его. (Это гарантирует, что ваша новая переменная среды будет использоваться в вашем сеансе.)
  • Теперь запустите команду: webdriver-manager update

Ответ 10

В mac osx измените версию в package.json для транспортира на "*", удалите node_modules и установите снова.

Ответ 11

Отдельный файл selenium был поврежден, поэтому мне пришлось перезаписать его, скопировав его непосредственно в папку.

C:/Users/****/AppData/Roaming/npm/node_modules/protractor/selenium/

Также мне пришлось переименовать хромированный рекордер, поэтому он на самом деле называется "chromedriver", а не "chromedriver.exe".

C:/Users/****/AppData/Roaming/npm/node_modules/protractor/selenium/chromedriver

Это частично произошло, потому что я не установил прокси-сервер в webdriver. Вы можете увидеть Решение для этого в принятом ответе.

Ответ 12

Для меня команды npm install и npm run update-webdriver просто продолжали загружать поврежденный файл Chromedriver_x.xx.zip. Поэтому я попытался запустить webdriver-manager update, и он сработал.

Ответ 13

В Windows у меня возникли проблемы с проектом, который отлично работал на моем mac. Команда, которая, наконец, сделала это для меня, была:

node node_modules\protractor\bin\webdriver-manager update

Ответ 14

Просто добавьте "preprotractor": "npm install chromedriver" к вашему package.json

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