windows - Protractor/ Selenium "could not find chromedriver at"(在 Windows 上)

标签 windows angularjs selenium selenium-chromedriver protractor

我按照 this tutorial 安装了 Protractor 当我使用 webdriver-manager update 时,它​​说:

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

当我尝试运行 Protractor 测试时,它说:

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,但只有一个名为 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

有人有什么想法吗?

最佳答案

我也遇到了这个错误,当我阅读教程时,它没有涵盖如何安装 Protractor 和 webdriver 作为项目的本地依赖项(位于 ./node_modules 中)。

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

  1. 安装 Protractor :

npm install protractor --save-dev

  1. 通过运行 webdriver-manager 安装 selenium 和 webdrivers:

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

调用此命令后,查看 ./node_modules/protractor 及其子文件夹以验证它。一个名为 selenium 的文件夹应该在其中可用,其中包含 chromedriver

请注意,由于 Protractor 未安装为“全局”,因此从命令行调用它会导致“找不到命令”错误。 您可以使用以下命令运行它: ./node_modules/protractor/bin/protractor

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

希望这能帮助你进一步...

关于windows - Protractor/ Selenium "could not find chromedriver at"(在 Windows 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22193692/

相关文章:

c# - Selenium Webdriver C#, Chrome, 图标隐藏元素且不可点击

c# - 浏览器打开,但无法加载本地主机页面——Selenium、MVC、C# .NET

selenium - 开放层的自动化测试可能吗?

windows - Git svn 不使用 svn 凭据

windows - 如何从 tar 文件加载 Docker 镜像

windows - GetUserPreferredUILanguages() 永远不会返回超过两种语言

angularjs - 告诉 ngAnimate 只为 ngShow/ngHide 设置动画

windows - 是否可以杀死 Weblogic 中的卡住线程?

javascript - Angular 按顺序维护指令列表

javascript - Angular 表达式的安全性