量角器/硒"无法找到chromedriver"(在Windows上)

And*_*erj 43 windows selenium selenium-chromedriver angularjs protractor

我按照本教程安装了量角器,当我使用webdriver-manager更新时,它说:

selenium standalone is up to date.
chromedriver is up to date.
Run Code Online (Sandbox Code Playgroud)

当你尝试进行量角器测试时,它说:

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
Run Code Online (Sandbox Code Playgroud)

我检查了local.dp.js并看到它试图从.. \node_modules\protractor\selenium\chromedriver加载chromedriver但是只有一个名为chromedriver_2.9的空zip文件.

所以我手动下载了chromedriver并将其复制到这个位置,产生了一个新的错误:

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
Run Code Online (Sandbox Code Playgroud)

任何想法?

sti*_*kis 64

我也面临着这个错误,当我阅读教程时,它没有涵盖如何安装量角器和webdriver作为项目的本地依赖项(位于./node_modules中).

如果这是您喜欢的(可能是因为您可能希望使用grunt-protractor-runner并在以后以连续构建方式运行测试)而不是全局安装,此解决方案对我有用:

  1. 安装量角器:

npm install protractor --save-dev

  1. 通过运行以下命令,使用webdriver-manager安装selenium和webdrivers:

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

调用此命令后,查看./node_modules/protractor它和子文件夹以验证它.所谓的文件夹seleniumchromedriver在应该在它可用.

请注意,由于量角器未安装为"全局",因此从命令行调用它将导致"未找到commnad"错误.您可以使用以下命令运行它: ./node_modules/protractor/bin/protractor

另外,将一个脚本定义添加到package.json可能是一个好主意,这样下次从零开始安装所有依赖项时,npm会自动设置webdrivers.为此,将其添加到package.json文件中: "scripts": { "postinstall": "./node_modules/protractor/bin/webdriver-manager update" }

希望这可以帮助你进一步......

  • 只需要在第2步中将"node"放在第一个命令中 (12认同)
  • 这个答案实际上以一种理智的方式解决了这个问题.谢谢! (2认同)

Sne*_*thi 26

如果您在代理后面,请先尝试设置代理,然后运行webdriver update:

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

webdriver-manager update
Run Code Online (Sandbox Code Playgroud)

  • 首先从/ selenium文件夹中删除0字节文件 (3认同)

Che*_*vas 23

我遵循该教程并遇到了同样的问题.这里的问题是你需要在量角器配置文件中指定你的selenium jar和chrome driver exe的路径.我的全局安装在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/'

};
Run Code Online (Sandbox Code Playgroud)

这似乎成功了.


bro*_*son 13

Jeez,这么多答案......

在Mac上,这对我有用:

$ npm install chromedriver
$ ln -sf ~/angular-phonecat/node_modules/chromedriver/bin/chromedriver node_modules/protractor/selenium/chromedriver.exe
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法来解决它,但至少这让我继续前进.


tur*_*nvh 7

环顾四周后,我注意到angular phonecat repo中package.json包含的文件定义了一个任务.update-webdriver

npm run update-webdriver为我运行该任务(带)固定量角器.