2014-09-22 47 views
2

我想整合黄瓜量角器,虽然安装程序按预期工作(测试失败并正常成功),我得到令人讨厌的ECONNREFUSED错误,使我的反馈不可读。量角器 - 黄瓜:令人讨厌的ECONNFIFED错误,虽然按预期工作

  • 问题1:ECONNFRESED错误的确切含义是什么?我不太了解反馈意见,也找不到好的文档。

  • 问题2:我的设置有什么问题?我的设置是否正确?

  • 问题3:有人在量角器上用黄瓜在流浪箱中进行BDD测试吗?示例代码,请:)

依赖

npm i protractor cucumber selenium-webdriver chai chai-as-promised express grunt-protractor-runner protractor-cucumber --save-dev 

正如你看到的,我通过咕噜运行的流浪汉盒内我的命令。流浪者箱子只有firefox,我不确定这是个问题,量角器之前运行得很好。

终端反馈

[[email protected] web-src]$ grunt protractor:singlerun 
Running "protractor:singlerun" (protractor) task 
Using the selenium server at http://localhost:4444/wd/hub 

Feature: Blog 
    As a user 
    I want to visit blog 
    So that I can stay informed about a topic 


    Scenario: A disclaimer scenario # tests/e2e/cucumber/features/Blog.feature:6 

/var/www/miyagi/web-src/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:131 
    var session = webdriver.promise.controlFlow().execute(function() { 
               ^
Error: ECONNREFUSED connect ECONNREFUSED 
    at <anonymous> 
    at <anonymous> 
    at <anonymous> 
    at <anonymous> 
    at <anonymous> 
    at <anonymous> 
==== async task ==== 
WebDriver.createSession() 
    at Function.webdriver.WebDriver.acquireSession_ (/var/www/miyagi/web-src/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:131:49) 
    at Function.webdriver.WebDriver.createSession (/var/www/miyagi/web-src/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:111:30) 
    at Builder.build (/var/www/miyagi/web-src/node_modules/protractor/node_modules/selenium-webdriver/builder.js:106:20) 
    at HostedDriverProvider.getDriver (/var/www/miyagi/web-src/node_modules/protractor/lib/driverProviders/hosted.js:63:9) 
    at /var/www/miyagi/web-src/node_modules/protractor/lib/runner.js:241:41 
    at _fulfilled (/var/www/miyagi/web-src/node_modules/protractor/node_modules/q/q.js:797:54) 
    at self.promiseDispatch.done (/var/www/miyagi/web-src/node_modules/protractor/node_modules/q/q.js:826:30) 
    at Promise.promise.promiseDispatch (/var/www/miyagi/web-src/node_modules/protractor/node_modules/q/q.js:759:13) 
    at /var/www/miyagi/web-src/node_modules/protractor/node_modules/q/q.js:573:44 
>> 
>> Test failed but keep the grunt process alive. 

Done, without errors. 
[[email protected] web-src]$ 

量角器配置

// conf.js 
exports.config = { 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    specs: ['../cucumber/features/*.feature'], 
    multiCapabilities: [{ 
    browserName: 'firefox' 
    }], 
    onPrepare: function() { 
    var width = 1024; 
    var height = 600; 
    browser.driver.manage().window().setSize(width, height); 
    // implicit and page load timeouts 
    browser.manage().timeouts().pageLoadTimeout(40000); 
    browser.manage().timeouts().implicitlyWait(25000); 

    // for non-angular page 
    browser.ignoreSynchronization = true; 
    }, 
    framework: 'cucumber', 
    cucumberOpts: { 
    require: '../cucumber/features/*.steps.js', 
    format: 'pretty' 
    } 
}; 

咕噜任务

protractor: { 
      options: { 
       configFile: '<%=tests %>/e2e/protractor/config.js', // Default config file 
       noColor: false,  // If true, protractor will not use colors in its output 
       keepAlive: true 
      }, 
      auto : { 
       keepAlive: true // If false, the grunt process stops when the test fails. 
      }, 
      singlerun: {} 
     }, 

功能

Feature: Blog 
    As a user 
    I want to visit blog 
    So that I can stay informed about a topic 

    Scenario: A disclaimer scenario 
    Given I visit blog 
    Then I should see a disclaimer 

步骤

//http://chaijs.com/ 
var chai = require('chai'); 

//https://github.com/domenic/chai-as-promised/ 
var chaiAsPromised = require('chai-as-promised'); 
chai.use(chaiAsPromised); 
var expect = chai.expect; 

module.exports = function() { 
    var url = 'http://dev.com/search', 
    searched = url + '#/?q=food&page_number=1&sort=relevance', 
    driver, 
    resultsA, resultsB, resultsC, 
    page, 
    site; 




    this.Given(/^I visit blog$/, function(callback) { 
    browser.get(url); 
    driver = browser.driver; 
    browser.getTitle() 
     .then(function (title) { 
     expect(browser.getTitle()).to.eventually.equal(arg1).and.notify(callback); 
     }); 
    }); 

    this.Then(/^I should see a disclaimer$/, function(callback) { 
    element(by.css ('.disclaimer')) 
     .isDisplayed() 
     .then(function (el) { 
     expect(el).to.have.length(1); 
     callback(); 
     }); 
    }); 
}; 

干杯

回答

0

你从来没有提过建立一个本地Selenium服务器。你忘记了吗?

./node_modules/protractor/bin/webdriver-manager update 
./node_modules/protractor/bin/webdriver-manager start 

只要让它在自己的终端窗口中运行,并尝试再次运行测试。

+0

谢谢你的回答,它恰好从vagrant自动设置一个硒服务器,当我运行我得到的两个命令'错误:没有显示指定',我不是得到任何结果,没有运行命令我得到我的结果,但我也得到ECONNREFUSED错误 – 2014-09-23 09:23:59

+0

如果你在一个虚拟机,你可能需要运行['xvfb'](http://en.wikipedia .org/wiki/Xvfb),一个“xserver虚拟帧缓冲区”,用于在无GUI的服务器环境中运行无头firefox/chrome浏览器。 – Droogans 2014-09-29 15:20:23

+0

我会仔细检查一下,但我认为我们已经这样做了。 – 2014-10-01 15:58:44