我有一些带有代码的页面对象文档:
var gmailItemClicks = {
composeClick: function () {
return this.section.leftToolbarSection.click('@compose');
}
};
module.exports = {
commands: [gmailItemClicks],
sections: {
leftToolbarSection: {
selector: '.nH.oy8Mbf.nn.aeN',
elements: {
compose: { selector: '.T-I.J-J5-Ji.T-I-KE.L3' },
}
},
};
和包含许多步骤的测试文件,如下所示:
module.exports = {
'1st step': function (client) {
gmail.composeClick();
},
'2d step': function (client) {
gmail.composeClick();
}
}
我可以使用'gmail'变量,如果它在每个步骤中都是这样的:
module.exports = {
'1st step': function (client) {
var gmail = client.page.gmail();
gmail.composeClick();
},
'2d step': function (client) {
var gmail = client.page.gmail();
gmail.composeClick();
}
}
但我想将这个var与步骤中的测试代码分开。我试着用
const gmail = require('./../pages/gmail');
在module.exportsbloсk之前的测试中,我尝试使用具有相同语法的globals.js文件,但是我收到错误“✖TypeError:gmail.composeClick不是函数”。
现在我只有一个大函数,其中所有步骤都使用变量在func中声明一次,但测试日志看起来很难看,我无法看到一步开始和停止的位置。
我错过了什么?
答案 0 :(得分:0)
你可以在前一块中创建对象。以下是我的代码中的样子:
(function gmailSpec() {
let gmailPage;
function before(client) {
gmailPage = client.page.gmail();
gmailPage.navigate()
}
function after(client) {
client.end();
}
function firstStep() {
gmailPage.composeClick()
}
function secondStep() {
gmailPage.composeClick()
}
module.exports = {
before,
after,
'1st step': firstStep,
'2nd step': secondStep
}
}());
希望能帮助你:)