【问题标题】:Global variables aren't accessible in spec files protractor在规范文件量角器中无法访问全局变量
【发布时间】:2020-04-25 00:16:17
【问题描述】:

在自动化 Angular 4 应用程序时,我需要声明一些全局变量,即 myVar = 'John'。我尝试在 protractor.conf 中声明它,但它不起作用。我已经看过Protractor set global variables,但这些解决方案对我不起作用。有什么解决办法吗?我正在使用量角器版本 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 } }));
  }

提前致谢

【问题讨论】:

    标签: angular automation protractor global-variables e2e-testing


    【解决方案1】:

    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);
    

    【讨论】:

    • 非常感谢,它成功了。嗯...我知道并一次又一次地犯同样的错误。感谢您的快速回复。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你错过了教程:

      params: {
         myVar: 500;
      }
      
      let a = browser.params.myVar;
      console.log(a); // 500
      
      猜你喜欢
      • 1970-01-01
      • 2019-03-29
      • 2011-09-01
      • 2014-01-17
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      相关资源
      最近更新 更多