【问题标题】:Variable scope in protractor量角器中的变量范围
【发布时间】:2018-07-10 12:40:28
【问题描述】:

我正在运行量角器和 jasmine 来运行单元测试。

我需要知道我的网络应用的构建版本才能执行不同的测试。

我已经声明了一个变量来存储这个版本值。

var version ='';

我正在使用以下代码获取版本号。

menuObject.modaltext.getText().then(function(text) {
            version = text.slice(79,86);
            console.log(version);
            browser.driver.sleep(7000);
});

正确获取版本号并正确控制台。

但是当我在这个 .then 函数之外使用这个版本时,它的值变得未定义,我无法使用该变量检查任何条件。

如何访问版本号以便我使用它来控制测试流程。

![版本变量突出显示,我无法访问 if 案例中的版本]

【问题讨论】:

  • 你在哪里声明?
  • 就在描述内
  • 这个代码 sn-p 在你的 IT 规范中吗?如果它那么大,您是否也可以粘贴完整的描述块?
  • 我会在15分钟内粘贴代码
  • 先生,我已经编辑了原帖

标签: scope jasmine protractor


【解决方案1】:

尝试将var 更改为let。这允许在您的规范中访问您的version

describe('Nodeprojectpart2Component', () => {
    let version = '';
    beforeEach(() => {
        version = '1.0';
      });

    it('test', () => {
      console.log( 'version' + version);
    });

  });

您的代码有问题 - 您正在异步/回调函数中检索版本的值。现在在你的函数执行之前,你的控制台被执行并打印undefined。我不确定您为什么要在规范之外定义代码。但是如果你仍然想要,你应该在 desribe 块中定义它之后立即拥有检索逻辑,类似于 -

describe('Nodeprojectpart2Component', () => {
        let version = '';
        version = //logic to find the version here itself
        ....

【讨论】:

  • 谢谢先生的解决方案。我会试一试,然后告诉你
猜你喜欢
  • 2015-03-20
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多