【问题标题】:Unable to run Protractor - ECONNREFUSED connect ECONNREFUSED无法运行量角器 - ECONNREFUSED 连接 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)

我做错了什么?

【问题讨论】:

    标签: angularjs debugging webdriver protractor errno


    【解决方案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 测试将向该服务器发送请求以控制本地浏览器。让此服务器继续运行

      参考文献

      【讨论】:

      • @bobbyg603 通常,设置一个变量以在启动进程时存储对进程的引用,然后在停止它的命令中引用它。具体来说,语法从shellshell不等
      【解决方案5】:

      对我来说,这是由于 Node 和 Protractor 的版本不兼容造成的。

      我的修复-

      1. 将节点更新到最新版本(在我的情况下为 v7.0.0)

      按照此处给出的步骤https://stackoverflow.com/a/19333717/1902831

      1. 使用以下方法安装最新的量角器版本(在我的情况下为 4.0.10):

      npm install -g 量角器

      1. 打开另一个终端并执行以下命令:

      webdriver-manager 更新

      webdriver-manager 启动

      1. 使用以下命令在另一个终端中运行测试:

      量角器 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(没有区别);
              • 启用和不启用 directConnectkeepAlive 设置(绕过 Selenium 并导致与 Chromedriver 相关的崩溃,其中之一已被描述为 here)。

              解决方案相当简单:增加分配给容器的内存量。在我的 Windows 10 主机上,我执行了以下步骤:

              1. 在启动 docker-machine(通过 Docker Quickstart 脚本,相当于docker-machine start)之前运行VBoxManage.exe modifyvm default --memory 8192(通过自定义shell 脚本)。 (感谢this SO answer)。
              2. 更改我的 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

                    【讨论】:

                      猜你喜欢
                      • 2017-06-09
                      • 2016-04-18
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-10-27
                      • 2016-08-19
                      • 2015-03-24
                      相关资源
                      最近更新 更多