无法运行量角器 - ECONNREFUSED 连接 ECONNREFUSED
Posted
技术标签:
【中文标题】无法运行量角器 - ECONNREFUSED 连接 ECONNREFUSED【英文标题】:Unable to run Protractor - ECONNREFUSED connect ECONNREFUSED 【发布时间】:2013-12-02 01:32:12 【问题描述】:我正在尝试学习 AngularJS。作为其中的一部分,我想学习使用端到端测试。目前,我有一个这样的目录结构:
node_modules
.bin
...
protractor
...
node_modules
.bin
adam-zip
glob
minijasminenode
optimist
saucelabs
selenium-webdriver
protractor
config.js
src
tests
test.e2e.js
我的 config.js 文件如下所示:
exports.config =
seleniumAddress: 'http://localhost:4444/wd/hub',
capabilities:
'browserName': 'chrome'
,
specs: [
'../src/tests/test.e2e.js'
],
jasmineNodeOpts:
showColors: true,
defaultTimeoutInterval: 30000
;
test.e2e.js 如下所示:
'use strict';
describe('My Sample', function ()
driver = protractor.getInstance();
beforeEach(function ()
driver.get('#/');
);
it('My First Test', function ()
message = "Hello.";
expect(message).toEqual('World.');
);
);
当我尝试使用量角器运行端到端测试时,我从命令行运行以下命令:
node_modules\.bin\protractor protractor\config.js
当我运行该命令时,我收到以下错误:
C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1542
throw error;
^
Error: ECONNREFUSED connect ECONNREFUSED
at ClientRequest.<anonymous> (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:12
7:16)
at ClientRequest.EventEmitter.emit (events.js:95:17)
at Socket.socketErrorListener (http.js:1528:9)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:441:14
at process._tickCallback (node.js:415:13)
==== async task ====
WebDriver.createSession()
at Function.webdriver.WebDriver.acquireSession_ (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriv
er\lib\webdriver\webdriver.js:130:49)
at Function.webdriver.WebDriver.createSession (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver
\lib\webdriver\webdriver.js:110:30)
at Builder.build (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\builder.js:105:20)
at runJasmineTests (C:\Src\MyProject\node_modules\protractor\lib\runner.js:191:45)
at C:\Src\MyProject\node_modules\protractor\lib\runner.js:255:5
at C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1178:15
at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriv
er\lib\webdriver\promise.js:1438:20)
at notify (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:328:12)
at then (C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:377:7)
我做错了什么?
【问题讨论】:
【参考方案1】:我用 --standalone 标志解决了这个问题:
webdriver-manager start --standalone
【讨论】:
你把旗帜放在哪里了? 这是一个命令标志。你看到的代码是我用来运行 webdriver manager 的命令。 但是你不使用量角器配置,你是手动传递这个吗? 另外,请确保更新 webdrive 以包含--standalone
选项,如下所示:webdriver-manager update --standalone
我重新安装了量角器。以独立模式运行 webdriver-manager,但仍然出现同样的错误。怎么办?【参考方案2】:
我通过从我的 config.js 中删除以下行来让它工作
seleniumAddress: 'http://localhost:4444/wd/hub',
【讨论】:
谢谢,我尝试了很多不同的建议,但这是唯一对我有用的建议。 Shashank,我花了20多个小时终于找到你了。它得到了工作的人。 尼克,这发生在我们最好的人身上。不过还是谢谢。【参考方案3】:您正在运行 selenium 服务器吗? git README 声明如下:
WebdriverJS 本身不包含 selenium 服务器 - 您必须启动一个独立的 selenium 服务器。您只需要最新的 selenium-server-standalone。
来源:https://github.com/angular/protractor
【讨论】:
【参考方案4】:错误信息是由于以下原因:
[ECONNREFUSED] 连接尝试被忽略(因为目标没有监听连接)或被明确拒绝。
检查 Webdriver 管理器的 URL。默认网址是:
http://localhost:4444/wd/hub
使用后台进程运行 webdriver-manager,然后运行量角器:
Start-Process webdriver-manager start -passthru
protractor conf.js
这将启动一个 Selenium 服务器并输出一堆信息日志。您的 Protractor 测试将向该服务器发送请求以控制本地浏览器。让此服务器继续运行
参考文献
Protractor Tutorial
Protractor Docs: Config File Reference
CONNECT Man Page
POSIX Man Page
【讨论】:
@bobbyg603 通常,设置一个变量以在启动进程时存储对进程的引用,然后在停止它的命令中引用它。具体来说,语法从shell到shell不等【参考方案5】:对我来说,这是由于 Node 和 Protractor 的版本不兼容造成的。
我的修复-
-
将节点更新到最新版本(在我的情况下为 v7.0.0)
按照此处给出的步骤https://***.com/a/19333717/1902831
-
使用以下方法安装最新的量角器版本(在我的情况下为 4.0.10):
npm install -g 量角器
-
打开另一个终端并执行以下命令:
webdriver-manager 更新
webdriver-manager 启动
-
使用以下命令在另一个终端中运行测试:
量角器 conf.js
【讨论】:
【参考方案6】:如果您使用 npm protractor-webdriver grunt 插件 (https://www.npmjs.org/package/grunt-protractor-webdriver),您可能会遇到相同类型的错误。 这是由于 webdriver 在测试结束之前终止。测试成功运行,然后您会收到如下消息:
Session deleted: Going to shut down the Selenium server
Shutting down Selenium server: http://127.0.0.1:4444
Shut down Selenium server: http://127.0.0.1:4444 (OKOK)
d:\Projets\Clouderial\nodeProjects\cld-apps\node_modules\grunt-protractor-runner\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:145
callback(new Error(message));
^
Error: ECONNREFUSED connect ECONNREFUSED
at ClientRequest.<anonymous> (d:\Projets\Clouderial\nodeProjects\cld-apps\node_modules\grunt-protractor-runner\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:145:16)
at ClientRequest.EventEmitter.emit (events.js:95:17)
at Socket.socketErrorListener (http.js:1547:9)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:440:14
at process._tickCallback (node.js:419:13)
我使用 grunt 插件中的 keepAlive 选项解决了这个问题。
这是我的 Gruntfile.js 配置:
protractor_webdriver:
options:
keepAlive : true // True to keep the webdriver alive
,
start:
,
,
...
我希望这会对某人有所帮助。
JM.
【讨论】:
【参考方案7】:我也遇到了同样的问题,对我有用的技巧是使用两个 cmd 窗口,在输入 webdriver-manager start
并且不按 回车键(如果按下回车键)后保持一个打开selenium 服务器已关闭,不知道为什么)打开另一个 cmd 窗口并调用您的测试。
【讨论】:
【参考方案8】:@Alexandros Spyropoulos,我花了很长时间才弄清楚如何运行量角器,我认为我们遇到了同样的问题。您应该打开一个终端选项卡并运行 webdriver-manager start --standalone。然后打开另一个终端标签并运行 protractor ***.conf.js
【讨论】:
【参考方案9】:希望它可以帮助某人:我遇到了同样的问题 - 使用 grunt-protractor-runner
遇到 ECONNREFUSED。我的案例的细微差别是我在 Docker 容器中运行我的整个 E2E 环境(测试文件、Web 应用程序和整个后端)。
我试过运行量角器
使用和不使用额外的grunt-protractor-webdriver
任务以“手动”启动和运行 webdriver(没有区别);
启用和不启用 directConnect
和 keepAlive
设置(绕过 Selenium 并导致与 Chromedriver 相关的崩溃,其中之一已被描述为 here)。
解决方案相当简单:增加分配给容器的内存量。在我的 Windows 10 主机上,我执行了以下步骤:
-
在启动 docker-machine(通过 Docker Quickstart 脚本,相当于
docker-machine start
)之前运行VBoxManage.exe modifyvm default --memory 8192
(通过自定义shell 脚本)。 (感谢this SO answer)。
更改我的 shell 脚本以运行我的默认容器,将--shm-size=4G
参数添加到我的docker run
命令。 (See docs)
您可以通过在您的客户机上运行 df -h
来验证它是否有效,方法是检查安装在 /dev/shm
上的内存量。
因此,我不再出现 ECONNREFUSED 等看似莫名其妙的错误。
【讨论】:
【参考方案10】:如果您运行提供的量角器演示,您应该尝试在与 selenium 相同的命令提示符下运行量角器配置。尝试分别运行 selenium 服务器和量角器。
确保首先通过以下命令运行 selenium。
webdriver-manager start --standalone
并在单独的命令窗口中运行量角器。
protractor conf.js
(在我的例子中 conf.js 是配置文件)
【讨论】:
【参考方案11】:我遇到了与 @David Remie 遇到的 Selenium Docker 网格/独立问题类似的问题。使用最少的 RAM/CPU,测试将在 webdriver 启动之前开始。一种资源消耗较少的方法是在测试前等待几秒钟(运行“睡眠 5”或类似的东西)。
增加 RAM 有时足以解决该问题,但真正的问题是 Selenium CMD(/opt/bin/entry_point.sh,启动运行 webdriver 的主管)从基于 https://hub.docker.com/r/selenium/node-base/dockerfile 的图像需要时间来启动 Selenium webdriver。
【讨论】:
【参考方案12】:webdriver-manager start ----- 没有帮助,但是下面一个有帮助
webdriver-manager start --standalone
【讨论】:
以上是关于无法运行量角器 - ECONNREFUSED 连接 ECONNREFUSED的主要内容,如果未能解决你的问题,请参考以下文章
heroku ECONNREFUSED:为所有运行命令连接 ECONNREFUSED
nodejs 连接mongoose 报错 connect ECONNREFUSED怎么解决
无法启动 WebDriverAgent:无法将命令代理到远程服务器。原始错误:错误:连接 ECONNREFUSED 127.0.0.1:8100
java.net.ConnectException:无法连接到 localhost/127.0.0.1(端口 8080):连接失败:ECONNREFUSED ....(代号一个应用程序)
Prisma 绑定无法连接到 prisma 服务器。请求 http://localhost:4466/ 失败,原因:连接 ECONNREFUSED 127.0.0.1:4466