从量角器中的onPrepare()传递全局变量

时间:2016-06-10 07:20:04

标签: protractor

如何从onPrepare()中的conf传递全局变量。因此它可以用于不同的规格。

在onPrepare()中,因为我从onPrepare()中调用的函数中获取值。所以想把这个价值变成全球的。这样它就可以在所有规范中使用。

4 个答案:

答案 0 :(得分:3)

您可以在onPrepare函数中使用或设置browser.params对象:

onPrepare: function () {
    browser.params.YOUR_PARAM = 'VALUE';
}

在规范中使用:

it('should...', function () {
    expect(browser.params.YOUR_PARAM).toEqual('VALUE');
});

答案 1 :(得分:3)

以下是我如何做全局变量 - 我在测试中使用多个浏览器,所以我需要一些快捷方式来轻松访问这两个浏览器:

onPrepare: function() {
    // Making manager and user globals - they will be accessible in all tests.
    global.manager = browser;
    global.user = browser.forkNewDriverInstance();

    ...
    //Making Expected Conditions global since it used widely.
    global.EC = protractor.ExpectedConditions;

然后只需拨打

即可随处访问
manager.$('blabla').click();
user.$('blabla').click();

user.wait(EC.visiblityOf($('foo')), 5000, 'foo should be visible');

希望这有帮助!

答案 2 :(得分:1)

我已经在gitter中发布了答案,你可以检查出基本上你应该使用'global'

helper.js - >您想要执行的常用功能/方法

   module.exports = {
   foo: 'bar',
   doSomething: function () {
   var sum = 1+1;
    return sum;
   }
  };

config.js

   var helper = require('./helper.js’);

   onPrepare: function () {

  global.output = helper.doSomething();

  },

spec.js

    describe(‘global variable test’, function() {

    it(’should print global variable’, function() {

     console.log(output);

     });
     });

答案 3 :(得分:-1)

在配置文件中将shardTestFiles参数设置为true时,它会起作用吗? 当我将其设置为true时,我遇到了全局值的问题。在错误时起作用。