我的pageObject文件:
this.clickTheProvidedValueInCompanyInformation = function (item) {
this.innerMenu = this.companyInformation.all(by.className('innermenu')).first();
this.selectedItem = this.innerMenu.all(by.tagName('li')).filter(function (elem, index) {
return elem.getText().then(function (text) {
return text.toUpperCase().replace(/ |-/g, '') === item.toUpperCase().replace(/ |-/g, '');
});
});
this.selectedItem.click();
this.selectedItem.getText().then(function (text) {
var option = text.toString();
var pageObject = option.replace(/ /g, '_').toLowerCase();
*******return require('./' + pageObject + '.page.js');**********
})
};
这是我的spec文件中的一行:
var generalInfo = pageObject.clickTheProvidedValueInCompanyInformation('generalInformation');
如您所见,对pageObject.clickTheProvidedValueInCompanyInformation('generalInformation')
的调用会返回另一个页面对象。
当我尝试在我的规范中访问我的generalInfo变量时,它会抛出错误
generalInfo未定义
。我可以通过generalInfo变量访问我返回的页面对象。
如果我把我的return require('./anotherPageObject.js')
放在getText()之外。那么,它工作正常。但是我必须对文本进行一些操作来修改我的命名约定,以便它返回正确的页面对象文件。 (我想返回一个名为'general_information.page.js'的页面对象文件)
答案 0 :(得分:2)
方法this.clickTheProvidedValueInCompanyInformation
不会返回任何内容。添加return
语句以返回最后一个承诺:
this.clickTheProvidedValueInCompanyInformation = function (item) {
this.innerMenu = this.companyInformation.all(by.className('innermenu')).first();
this.selectedItem = this.innerMenu.all(by.tagName('li')).filter(function (elem, index) {
return elem.getText().then(function (text) {
return text.toUpperCase().replace(/ |-/g, '') === item.toUpperCase().replace(/ |-/g, '');
});
});
this.selectedItem.click();
return this.selectedItem.getText().then(function (text) {
var option = text.toString();
var pageObject = option.replace(/ /g, '_').toLowerCase();
return require('./' + pageObject + '.page.js');
});
};
pageObject.clickTheProvidedValueInCompanyInformation('generalInformation').then(function(page){
console.log(page);
});