我试图通过直接连接到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。
答案 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"