如何配置量角器使用黄瓜

时间:2014-05-21 14:09:31

标签: protractor cucumberjs

0.20.1开始,Cucumber现在在Protractor中得到了完全支持,但我正在努力寻找有关如何正确配置它的任何文档。知道如何设置world.js吗?

我在https://github.com/whyvez/angular-cucumber-example/blob/master/features/support/world.coffee找到了这个例子,但我不确定你是否还需要指定所有需要的模块和配置,因为量角器配置文件(referenceConf.js)已经拥有所有这些信息。

assert = require 'assert'
path = require 'path'

protractor = require 'protractor'
webdriver = require 'selenium-webdriver'

driver = new webdriver.Builder().
  usingServer('http://localhost:4444/wd/hub').
  withCapabilities(webdriver.Capabilities.chrome()).
  build()

driver.manage().timeouts().setScriptTimeout(100000)

ptor = protractor.wrapDriver driver

class World
  constructor: (callback) ->
    @browser = ptor
    @By = protractor.By
    @assert = assert
    callback()

module.exports.World = World

4 个答案:

答案 0 :(得分:13)

我创建了一个示例项目来展示如何使用Cucumber配置Protractor并使用World。

世界是一个分享不同场景之间共性的地方,这样您就可以让代码保持井井有条。

实际上,您只需要在/ features下名为/ support的文件夹中创建world.js文件。你也可以把你的钩子放在那里。您的步骤定义中将提供每个属性或功能。

world.js:

module.exports = function() {

  this.World = function World(callback) {
    this.prop = "Hello from the World!";

    this.greetings = function(name, callback) {
      console.log("\n----Hello " + name);
      callback();
    };

    callback();
}

然后在你的步骤中:

var sampleSteps = function() {

    this.Given(/^this is the first sample$/, function (callback) {
      console.log("\n----" + this.prop);
      callback();
    });

    this.Given(/^this is the second sample$/, function (callback) {
      this.greetings("everybody", callback);
    });

};

module.exports = sampleSteps;

你的protractor.js配置文件看起来像这样:

exports.config = {

  specs: [
    'e2e/features/*.feature'
  ],

  capabilities: {
    'browserName': 'chrome'
  },

  baseUrl: 'http://localhost:8081/',

  framework: 'cucumber',

};

这是GitHub存储库。

https://github.com/plopcas/st-protractor-cucumber

希望这有帮助。

答案 1 :(得分:1)

看看protractor-cucumbe - 它附带了selenium-webdriver,支持Promises,并且有详细记录。

似乎需要最少的配置,并且所需要的内容清楚地记录在案。

答案 2 :(得分:0)

我从这个设置中获得了很好的成功

  class ChtWorld
    chai = require('chai');
    chaiAsPromised = require('chai-as-promised');

    constructor:  ->
      @browser = @protractor = require('protractor').getInstance()
      @By = @protractor.By
      chai.use(chaiAsPromised)
      @expect= chai.expect


  module.exports= ->
    this.World= (callback) ->
      w = new ChtWorld()
      callback(w)

由于量角器已经设置好,只需获取对它的引用就足够了 (请注意,要让Cucumber正确加载新世界,modules.exports必须恰到好处。)

作为旁注,它位于features / support / world.coffee中,未明确添加到'requires'列表中(尝试这样做会让我陷入Gherkin Lexing错误问题)。

答案 3 :(得分:0)

在配置文件中将其添加为框架:

exports.config = {
  // set to "custom" instead of cucumber.
  framework: 'custom',

  // path relative to the current config file
  frameworkPath: 'protractor-cucumber-framework'

  // relevant cucumber command line options
  cucumberOpts: {
    format: "summary"
  }
};

此处提供更多信息:Protractor Frameworks