如何等待从返回另一个页面对象的页面对象解析承诺?
How to wait for a promise to be resolved from a page object which is returning another page object?
我的页面对象文件:
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');**********
})
};
这是我的规范文件中的一行:
var generalInfo = pageObject.clickTheProvidedValueInCompanyInformation('generalInformation');
如您所见,对 pageObject.clickTheProvidedValueInCompanyInformation('generalInformation')
return 另一个页面对象的调用。
当我尝试访问我的规范中的 generalInfo 变量时,它抛出错误
generalInfo is undefined
。我可以做什么通过 generalInfo 变量访问我的 returned 页面对象。
如果我将我的 return require('./anotherPageObject.js')
放在 getText() 之外。那么它就可以工作 fine.But 我必须对文本做一些操作来修改我的命名约定,这样它 returns 正确的页面对象文件。 (我想 return 一个名为 'general_information.page.js' 的页面对象文件)
方法 this.clickTheProvidedValueInCompanyInformation
没有 return 任何东西。将 return
语句添加到 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);
});
我的页面对象文件:
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');**********
})
};
这是我的规范文件中的一行:
var generalInfo = pageObject.clickTheProvidedValueInCompanyInformation('generalInformation');
如您所见,对 pageObject.clickTheProvidedValueInCompanyInformation('generalInformation')
return 另一个页面对象的调用。
当我尝试访问我的规范中的 generalInfo 变量时,它抛出错误
generalInfo is undefined
。我可以做什么通过 generalInfo 变量访问我的 returned 页面对象。
如果我将我的 return require('./anotherPageObject.js')
放在 getText() 之外。那么它就可以工作 fine.But 我必须对文本做一些操作来修改我的命名约定,这样它 returns 正确的页面对象文件。 (我想 return 一个名为 'general_information.page.js' 的页面对象文件)
方法 this.clickTheProvidedValueInCompanyInformation
没有 return 任何东西。将 return
语句添加到 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);
});