量角器无法使用directConnect运行

时间:2015-02-03 05:18:30

标签: angularjs google-chrome selenium protractor selenium-chromedriver

我试图通过直接连接到Chrome来运行量角器,而不是运行Selenium。正如文档所说,可以通过在配置文件中将directConnect设置为true来实现。

当我使用directConnect: true运行量角器时,我得到:

  

直接使用ChromeDriver ...
  [launcher]运行1个实例   WebDriver错误:产生ENOENT       在errnoException(child_process.js:1001:11)       at Process.ChildProcess._handle.onexit(child_process.js:792:34)[launcher]进程已退出,错误代码为1

如果我在没有directConnect的情况下运行量角器而是指定我的selenium url,那么一切运行正常。

我正在运行Protractor版本1.6.1,Chrome版本41.0.2272.35 beta-m(64位)和Chromedriver版本2.13.0。

2 个答案:

答案 0 :(得分:2)

更新:虽然下面的解决方案对我有用,但在与量角器开发后,我意识到如果我运行webdriver-manager update来安装本地镀铬机,那么我不需要在我的量角器配置中设置chromeDriver设置。

我有同样的问题并通过改变protractor-conf.js中的chromeDriver路径设置来解决它,具体取决于我是在Windows还是OSX / Linux上。

下面的解决方案和说明假设您使用的是npm install chromedriver提供的chromedriver。此解决方案也适用于量角器3.2.2和chromedriver 2.21.2

Protractor + chromedriver在OSX和Linux上工作,但我在Windows上遇到了ENOENT错误。我提交了一个问题here,并且还记录了一种解决方法。

问题(我认为)是childProcess.spawn在Windows上出现问题(请参阅问题列表here),node_modules/chromedriver/bin/chromedriver文件在通过childProcess.spawn调用时无法正常运行 - 可能是因为此文件不可执行且Windows不知道使用node二进制文件来解释文件。

解决方法是在Windows上运行时提供Windows可执行文件的路径。如下所示,改变量角器-conf.js中的chromeDriver arg是很容易的 - 尽管是hackish:

所有三个操作系统的protractor-conf.js:

var chromeDriverPath = process.platform === 'win32' ? 'node_modules/chromedriver/lib/chromedriver/chromedriver.exe' : 'node_modules/chromedriver/bin/chromedriver';

exports.config = {
  directConnect: true,
  chromeDriver: chromeDriverPath,
  specs: [
    'features/*.feature'
  ],
  capabilities: {
    browserName: 'chrome',
    platform: 'ANY',
    chromeOptions: {
      args: ['--test-type']
    }
  }
}

希望这有帮助。

答案 1 :(得分:0)

ENOENT表示错误,没有这样的ENTity,并且与文件系统有关。

检查chromeDriver选项中是否设置了正确的path

capabilities : { chromeOptions: { "debuggerAddress":"127.0.0.1:8088" } }, directConnect: true, chromeDriver : "../bin/chromedriver_2.15.322448.exe"