文件结构
01.spec.js - - - 我从量角器规格中调用帮助器很好
describe('should click on element', function () {
var helper1 = require('../../modules/helpers/helper1.js');
it('should click and assert...', function() {
helper1.clickOnCircle('Accounts');
});
});
...但是要使用来自另一个帮助文件的任何辅助函数......
helpers1.js - - - 我必须在每个函数中都需要帮助器
module.exports = {
clickOnCircle: clickOnCircle,
clickOnBox : clickOnBox
};
var helper2 = require('./helper2.js'); //node require doesn't hit something like this
function clickOnCircle(circleText) {
var helper2 = require('./helper2.js'); //needed in every function
helper2.doSomething(circleText);
}
function clickOnBox(boxText) {
var helper2 = require('./helper2.js'); //needed in every function
helper2.doSomething(boxText);
}
这几乎就像我希望帮助文件在全球范围内可用。我已经搞乱了使用配置参数,但我仍然需要从每个函数中获取帮助器。
答案 0 :(得分:1)
您可以在模块的开头只加载一次其他模块,然后在该模块内的任何位置引用它们。
这应该可以正常工作:
// require in any other modules we need here
// modules are cached by the system
var helper2 = require('./helper2.js');
function clickOnCircle(circleText) {
helper2.doSomething(circleText);
}
function clickOnBox(boxText) {
helper2.doSomething(boxText);
}
module.exports = {
clickOnCircle: clickOnCircle,
clickOnBox : clickOnBox
};
答案 1 :(得分:0)
如何使用继承,
例如:
function shapeModel() {
var helper = require('./helper2.js');
function clickOnCircle() {
return helper.doSomething(circleText);
}
function clickOnBox() {
return helper.doSomething(boxText);
}
return {
clickOnCircle: clickOnCircle(),
clickOnBox : clickOnBox()
}
}
module.exports = shapeModel
这也使您可以在模块中使用该类。
这会将exports
放置在页面底部,允许helper
变量保持范围为全局,而不是在module.exports
答案 2 :(得分:0)
这是我们如何使用帮助器和页面对象的简短示例。我们有一个名为helper.js的文件,所有页面对象都在pages文件夹中。我们正在使用require-all节点模块来帮助我们包含所有页面对象。
// Require all application pages
global.pages = require('require-all')(__dirname + '/../pages/');
global.EC = protractor.ExpectedConditions;
// Instantiate all pages in our applications, and make them globally available to the tests
//***** User/Nav Pages *****
global.loginPage = new pages.Navigation.LoginHomePage();
global.instructorHomePage = new pages.Navigation.InstructorHomePage();
global.studentHomePage = new pages.Navigation.StudentHomePage();
global.studentAccessPage = new pages.Misc.StudentAccessPage();
global.selfEnrollPage = new pages.User.SelfEnrollPage();
global.instructorNavPanelPage = new pages.Navigation.InstructorNavPanelPage();
global.studentNavPanelPage = new pages.Navigation.StudentNavPanelPage();
global.createInstructorPage = new pages.Admin.CreateInstructorPage();
global.addUserPage = new pages.User.AddUserPage();
然后这是我们如何拥有其中一个页面的模板
var TemplatePage = function() {
//***** Buttons & Links *****
this.link = element(by.linkText('link'));
this.link2 = element(by.linkText('link2'));
//***** Input Fields *****
//***** Drop-Downs *****
//***** Check Boxes *****
//***** Page Elements *****
//***** Helpers *****
this.clickLink = function() {
return link.click(); };
};
module.exports = TemplatePage;