规范文件量角器中无法访问全局变量

Global variables aren't accessible in spec files protractor

在自动化 angular 4 应用程序时,我需要声明一些全局变量,即 myVar = 'John'。我尝试在 protractor.conf 中声明它,但它不起作用。我已经看过 但这些解决方案对我不起作用。有什么解决办法吗?我正在使用量角器版本 5.4.2。

exports.config = {
//..
params:{
myVar = 'John'
},

//..
}
我也已经用过了,但它不起作用

onPrepare() {
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
    //this global variable 
    global.myVar = 10000;
    
    browser.waitForAngularEnabled(false);
    browser.driver.manage().window().maximize();
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }

提前致谢

您错过了教程:

params: {
   myVar: 500;
}

let a = browser.params.myVar;
console.log(a); // 500

params 是一个对象,因此需要 : 将值赋给 myVar,而不是 =

exports.config = {
  params:{
    myVar:'John'
  },    
}

调用方式如下

console.log(browser.params.myVar)

第二种方法应该可以正常工作。你只需要调用它

onPrepare() {
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
    //this global variable 
    global.myVar = 10000;

    browser.waitForAngularEnabled(false);
    browser.driver.manage().window().maximize();
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }

调用

console.log(myVar);

另请注意,当使用 'global.blabla' 或 'browser.params' 并启用测试并行化 (shardTestFiles: true) 时,它们将是只读的。这意味着如果您将在一个线程中更改这些变量 - 其他线程仍将具有旧值,因为在量角器中每个测试线程都在单独的 nodejs 进程中运行并且它们没有共享内存。