如何在量角器自动化中使用Javascript名称空间?

如何在量角器自动化中使用Javascript名称空间?,javascript,jquery,automation,jasmine,protractor,Javascript,Jquery,Automation,Jasmine,Protractor,我有3个文件,即conf.js、actionwords.js、project_test.js。 Actionwords.js和project_test.js是从hiptest工具生成的文件。所以我需要使用这种结构来自动化测试用例。当我运行cmd时,我得到一个错误 我跑: protractor conf.js 信息: 失败:无法读取未定义的属性“theApplicationURL” 堆栈: TypeError:无法读取未定义的属性“theApplicationURL” //conf.js exp

我有3个文件,即conf.js、actionwords.js、project_test.js。 Actionwords.js和project_test.js是从hiptest工具生成的文件。所以我需要使用这种结构来自动化测试用例。当我运行cmd时,我得到一个错误

我跑:

protractor conf.js
信息: 失败:无法读取未定义的属性“theApplicationURL”

堆栈: TypeError:无法读取未定义的属性“theApplicationURL”

//conf.js

exports.config = {
 framework: 'jasmine2',
 directConnect: true,
 seleniumAddress: 'http://localhost:4444/wd/hub',
 specs:['path to/project_test.js'],
 capabilities: { 'browserName': 'chrome' }
 };
//actionwords.js

var Actionwords = {
theApplicationURL: function () {
browser.get('localhost');
browser.driver.manage().window().maximize();
browser.sleep(5000);
   },
};
//project_test.js

describe('Test', function () {
beforeEach(function () {
this.actionwords = Object.create(Actionwords);
});

it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function () {
// Given the application URL
this.actionwords.theApplicationURL();
});
});
有人能帮我吗?

在每个(…)之前的
中,
这是指传递给它的匿名函数。这同样适用于
it(…)

描述的范围内声明变量

describe('Test', function() {
    var actionwords = Object.create(Actionwords);

    it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function() {
        actionwords.toApplicationURL();
    });
});
在每个(…)
之前的
中,
这是指传递给它的匿名函数。这同样适用于
it(…)

描述的范围内声明变量

describe('Test', function() {
    var actionwords = Object.create(Actionwords);

    it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function() {
        actionwords.toApplicationURL();
    });
});
更改为:

var actionwords = {
  theApplicationURL: function () {
    browser.get('localhost');
    browser.driver.manage().window().maximize();
    browser.sleep(5000);
  },
};

module.exports = actionwords;
测试:

这篇
评论的反应:

您可以在每次
之前的
中将其分配给此范围:

var actionwords = require("actionwords.js")

describe('Test', function () {
  beforeEach(function () {
    this.actionwords = actionwords;
  });
  it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function () {
    // Given the application URL
    this.actionwords.theApplicationURL();
  });
});
更改为:

var actionwords = {
  theApplicationURL: function () {
    browser.get('localhost');
    browser.driver.manage().window().maximize();
    browser.sleep(5000);
  },
};

module.exports = actionwords;
测试:

这篇
评论的反应:

您可以在每次
之前的
中将其分配给此范围:

var actionwords = require("actionwords.js")

describe('Test', function () {
  beforeEach(function () {
    this.actionwords = actionwords;
  });
  it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function () {
    // Given the application URL
    this.actionwords.theApplicationURL();
  });
});

更新您的
actionword.js
,如下所示

var Actionwords = {
theApplicationURL: function () {
  browser.get('localhost');
  browser.driver.manage().window().maximize();
  browser.sleep(5000);
 },
};
module.exports = new Actionwords();
而您的
项目_test.js
将如下所示:

this.actionwords = require("actionword.js");

describe('Test', function () {
 it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function () {
   this.actionwords.theApplicationURL();
 });
});

更新您的
actionword.js
,如下所示

var Actionwords = {
theApplicationURL: function () {
  browser.get('localhost');
  browser.driver.manage().window().maximize();
  browser.sleep(5000);
 },
};
module.exports = new Actionwords();
而您的
项目_test.js
将如下所示:

this.actionwords = require("actionword.js");

describe('Test', function () {
 it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function () {
   this.actionwords.theApplicationURL();
 });
});


尝试但是没有起作用。引用错误:未定义Actionwords哪行?当调用“Object.create”或调用“actionwords.toApplicationURL”时?声明
var actionwords=require(“actionwords.js”)
@Sudharsan Selvaraj:我之前做过。仍不工作。具体来说:失败:无法读取undefinedTried的属性“theApplicationURL”。但是没有起作用。引用错误:未定义Actionwords哪行?当调用“Object.create”或调用“actionwords.toApplicationURL”时?声明
var actionwords=require(“actionwords.js”)
@Sudharsan Selvaraj:我之前做过。仍然不起作用。具体来说:失败:无法读取未定义的属性“theApplicationURL”具体来说:失败:无法读取未定义的属性“theApplicationURL”得到此消息..消息:失败:actionwords.theApplicationURL不是再次更新的函数,您也需要导出Luboskrnac:谢谢您的回答。它正在工作。。但是我不能更改我的测试文件。原因是我从一个工具导出它。因此,假设有60000个测试用例,我不能为每个测试用例更改我的测试文件。我需要保持这样。actionwords.theApplicationURL();所以我不能从actionwords中删除这个;因为这就是我从工具中得到的结构。你能在这方面帮助我吗。具体来说:失败:无法读取未定义的属性'theApplicationURL'获取此..消息:失败:actionwords.theApplicationURL不是再次更新的函数,你也需要导出Luboskrnac:谢谢你的回答。它正在工作。。但是我不能更改我的测试文件。原因是我从一个工具导出它。因此,假设有60000个测试用例,我不能为每个测试用例更改我的测试文件。我需要保持这样。actionwords.theApplicationURL();所以我不能从actionwords中删除这个;因为这就是我从工具中得到的结构。在这方面你能帮我更多吗?将你的actionwords改为函数而不是对象并导出,然后在project_test.js中使用require()将你的actionwords改为函数而不是对象并导出,然后在project_test.js中使用require()导出对象而不是对象函数。因此,如果不在测试规范中使用,可能会造成空间浪费。导出对象不是对象函数。因此,如果不在测试规范中使用,可能会造成空间浪费。