2017-03-17 330 views
0

我正在MEAN JS棧應用程序中運行一個grunt測試,發現一個問題,我無法解決它的原因。UnknownError:連接被拒絕(連接被拒絕)

自己運行webdriver-manager,即webdriver-manager start,工作正常,但通過咕嚕聲test任務運行似乎失敗。

我也注意到端口是不同的(不是4444)。不知道如何改變這一點。

Running "protractor:e2e" (protractor) task 
webdriver-manager path: /Users/valdy/Development/MeanJSApp/node_modules/protractor/bin/webdriver-manager 
selenium standalone is up to date. 
chromedriver is up to date. 
Starting selenium standalone server... 
[launcher] Running 1 instances of WebDriver 
Selenium standalone server started at http://192.168.0.115:64594/wd/hub 

/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/atoms/error.js:108 
    var template = new Error(this.message); 
       ^
UnknownError: Connection refused (Connection refused) 
    at new bot.Error (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/atoms/error.js:108:18) 
    at Object.bot.response.checkResponse (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/atoms/response.js:109:9) 
    at /Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:160:24 
    at promise.ControlFlow.runInFrame_ (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1857:20) 
    at wrappedCtr.notify (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2448:25) 
    at promise.Promise.notify_ (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:564:12) 
    at Array.forEach (native) 
    at promise.Promise.notifyAll_ (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:553:15) 
    at goog.async.run.processWorkQueue (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/goog/async/run.js:130:15) 
    at process._tickCallback (internal/process/next_tick.js:103:7) 
From: Task: WebDriver.createSession() 
    at Function.webdriver.WebDriver.acquireSession_ (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:157:22) 
    at Function.webdriver.WebDriver.createSession (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:131:30) 
    at Builder.build (/Users/valdy/Development/MeanJSApp/node_modules/selenium-webdriver/builder.js:445:22) 
    at LocalDriverProvider.DriverProvider.getNewDriver (/Users/valdy/Development/MeanJSApp/node_modules/protractor/lib/driverProviders/driverProvider.js:38:7) 
    at Runner.createBrowser (/Users/valdy/Development/MeanJSApp/node_modules/protractor/lib/runner.js:182:37) 
    at /Users/valdy/Development/MeanJSApp/node_modules/protractor/lib/runner.js:263:21 
    at _fulfilled (/Users/valdy/Development/MeanJSApp/node_modules/q/q.js:797:54) 
    at self.promiseDispatch.done (/Users/valdy/Development/MeanJSApp/node_modules/q/q.js:826:30) 
    at Promise.promise.promiseDispatch (/Users/valdy/Development/MeanJSApp/node_modules/q/q.js:759:13) 
    at /Users/valdy/Development/MeanJSApp/node_modules/q/q.js:573:44 
[launcher] Process exited with error code 1 
>> 
Warning: Tests failed, protractor exited with code: 1 Use --force to continue. 

Aborted due to warnings. 

這是tests.js的配置(/config/assets/tests.js):

'use strict'; 

module.exports = { 
    tests: { 
    // client: ['modules/*/tests/client/**/*.js'], 
    client: ['modules/forum/tests/client/**/*.js'], 


    // server: ['modules/*/tests/server/**/*.js'], 
    server: ['modules/forum/tests/server/**/*.js'], 

    e2e: ['modules/*/tests/e2e/**/*.js'] 
    // e2e: ['modules/forum/tests/e2e/**/*.js'] 

    } 
}; 

我還發現,量角器的config.json,/node_module/protractor/config.json下有此配置:

{ 
    "webdriverVersions": { 
     "selenium": "2.47.1", 
     "chromedriver": "2.19", 
     "iedriver": "2.47.0" 
    } 
} 

這是我自己的protractor.config.js,位於網絡應用程序的根目錄中:

'use strict'; 

// Protractor configuration 
var config = { 
    specs: ['modules/*/tests/e2e/*.js'] 
}; 

if (process.env.TRAVIS) { 
    config.capabilities = { 
     browserName: 'firefox' 
    }; 
} 

exports.config = config; 

這裏是量角器的NPM描述符(/node_module/protractor/package.json):

{ 
    "_args": [ 
     [ 
      { 
       "raw": "[email protected]", 
       "scope": null, 
       "escapedName": "Protractor", 
       "name": "Protractor", 
       "rawSpec": "2.5.1", 
       "spec": "2.5.1", 
       "type": "version" 
      }, 
      "/Users/valdy/Development/MeanJSApp" 
     ] 
    ], 
    "_from": "[email protected]", 
    "_id": "[email protected]", 
    "_inCache": true, 
    "_location": "/protractor", 
    "_nodeVersion": "0.12.7", 
    "_npmUser": { 
     "name": "angularcore", 
     "email": "[email protected]" 
    }, 
    "_npmVersion": "2.11.3", 
    "_phantomChildren": { 
     "boom": "2.10.1", 
     "chalk": "1.1.3", 
     "combined-stream": "1.0.5", 
     "core-util-is": "1.0.2", 
     "cryptiles": "2.0.5", 
     "ctype": "0.5.3", 
     "forever-agent": "0.6.1", 
     "graceful-readlink": "1.0.1", 
     "hoek": "2.16.3", 
     "inherits": "2.0.3", 
     "is-my-json-valid": "2.16.0", 
     "isstream": "0.1.2", 
     "json-stringify-safe": "5.0.1", 
     "lru-cache": "2.7.3", 
     "oauth-sign": "0.8.2", 
     "sigmund": "1.0.1", 
     "sntp": "1.0.9", 
     "string_decoder": "0.10.31", 
     "stringstream": "0.0.5", 
     "tough-cookie": "2.3.2" 
    }, 
    "_requested": { 
     "raw": "[email protected]", 
     "scope": null, 
     "escapedName": "Protractor", 
     "name": "Protractor", 
     "rawSpec": "2.5.1", 
     "spec": "2.5.1", 
     "type": "version" 
    }, 
    "_requiredBy": [ 
     "#USER", 
     "/grunt-protractor-runner", 
     "/gulp-protractor" 
    ], 
    "_resolved": "https://registry.npmjs.org/protractor/-/protractor-2.5.1.tgz", 
    "_shasum": "03d6c93cd7c268f4250177d55a2fec8a198372cd", 
    "_shrinkwrap": null, 
    "_spec": "[email protected]", 
    "_where": "/Users/valdy/Development/MeanJSApp", 
    "author": { 
     "name": "Julie Ralph", 
     "email": "[email protected]" 
    }, 
    "bin": { 
     "protractor": "bin/protractor", 
     "webdriver-manager": "bin/webdriver-manager" 
    }, 
    "bugs": { 
     "url": "https://github.com/angular/protractor/issues" 
    }, 
    "dependencies": { 
     "accessibility-developer-tools": "~2.6.0", 
     "adm-zip": "0.4.4", 
     "glob": "~3.2", 
     "html-entities": "~1.1.1", 
     "jasmine": "2.3.2", 
     "jasminewd": "1.1.0", 
     "jasminewd2": "0.0.6", 
     "lodash": "~2.4.1", 
     "minijasminenode": "1.1.1", 
     "optimist": "~0.6.0", 
     "q": "1.0.0", 
     "request": "~2.57.0", 
     "saucelabs": "~1.0.1", 
     "selenium-webdriver": "2.47.0", 
     "source-map-support": "~0.2.6" 
    }, 
    "description": "Webdriver E2E test wrapper for Angular.", 
    "devDependencies": { 
     "chai": "~3.3.0", 
     "chai-as-promised": "~5.1.0", 
     "cucumber": "~0.6.0", 
     "expect.js": "~0.2.0", 
     "express": "~3.3.4", 
     "jshint": "2.5.0", 
     "mocha": "2.3.3", 
     "rimraf": "~2.2.6" 
    }, 
    "directories": {}, 
    "dist": { 
     "shasum": "03d6c93cd7c268f4250177d55a2fec8a198372cd", 
     "tarball": "https://registry.npmjs.org/protractor/-/protractor-2.5.1.tgz" 
    }, 
    "gitHead": "645133d557f1059d9e885f2566fc4c29ce7c19cc", 
    "homepage": "https://github.com/angular/protractor", 
    "keywords": [ 
     "angular", 
     "test", 
     "testing", 
     "webdriver", 
     "webdriverjs", 
     "selenium" 
    ], 
    "license": "MIT", 
    "main": "lib/protractor.js", 
    "maintainers": [ 
     { 
      "name": "juliemr", 
      "email": "[email protected]" 
     }, 
     { 
      "name": "angularcore", 
      "email": "[email protected]" 
     } 
    ], 
    "name": "protractor", 
    "optionalDependencies": {}, 
    "readme": "ERROR: No README data found!", 
    "repository": { 
     "type": "git", 
     "url": "git://github.com/angular/protractor.git" 
    }, 
    "scripts": { 
     "pretest": "jshint lib spec scripts", 
     "start": "node testapp/scripts/web-server.js", 
     "test": "node scripts/test.js" 
    }, 
    "version": "2.5.1" 
} 
+0

請添加您的配置文件。 – cnishina

+0

@cnishina - 我已經添加了測試配置的片段。那是你需要的配置嗎? – dcpartners

+0

我很困惑。這不是一個量角器配置文件。你在使用量角器5嗎?你在使用包裝量角器的東西嗎? – cnishina

回答

1

這裏是一個發生了什麼事我最好的猜測:

  1. 您與硒獨立服務器locally使用這個IP發動地址和端口不是4444.這意味着您沒有選擇seleniumAddress: "http://localhost:4444/wd/hub"directConnect: true。我會看到下面的代碼片段。

  2. 如果您在本地啓動而不是在特拉維斯上,則量角器將啓動Chrome browser by default。這也意味着你應該已經下載了ChromeDriver。

  3. 您應該從Protractor 2.5升級到最新版本。量角器與整個堆棧緊密耦合:selenium-webdriver,獨立服務器,瀏覽器驅動程序和瀏覽器。如果您使用的是最新的瀏覽器和Protractor 2.5,那麼可能是webdriver-manager下載了可能與您的瀏覽器不兼容的舊二進制文件。


這裏是代碼片段:

exports.config = { 
    // option 1. launches a selenium standalone server. this is helpful if 
    // you launch it with "webdriver-manager start" 
    // seleniumAddress: "http://localhost:4444/wd/hub", 
    // 
    // option 2. launch browser directly using browser binaries 
    // directConnect: true, 
    // 
    // option 3. do not include either seleniumAddress or directConnect 
    // and this option will launch the selenium standalone server using 
    // your ip address. 
    // 
    // option 4: launch with saucelabs or browserstack options 
} 

該文件涉及到這一塊,你定義你的配置,集功能僅適用於特拉維斯和導出配置。

'use strict'; 

// Protractor configuration 
var config = { 
    specs: ['modules/*/tests/e2e/*.js'] 
}; 

if (process.env.TRAVIS) { 
    config.capabilities = { 
    browserName: 'firefox' 
    }; 
} 

exports.config = config; 
+1

編輯protractor.config.js並在不同的控制檯上運行'webdriver-manager start'。它很好地工作! var config = {seleniumAddress:'http:// localhost:4444/wd/hub', specs:['modules/*/tests/e2e/*。js'] }; – dcpartners

+0

Huzzah!好的一點是你需要在不同的控制檯上運行'webdriver-manager start'。 – cnishina