Как дождаться разрешения обещания от объекта страницы, который возвращает другой объект страницы?

Мой файл 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');**********
    })
};

это строка из моего файла спецификации:

var generalInfo = pageObject.clickTheProvidedValueInCompanyInformation('generalInformation');

как видите, вызов pageObject.clickTheProvidedValueInCompanyInformation('generalInformation') возвращает другой объект страницы.

Когда я пытаюсь получить доступ к своей переменной generalInfo в своих спецификациях, она выдает ошибку

общая информация не определена

.Что я могу сделать, чтобы получить доступ к возвращенному объекту страницы через переменную generalInfo.

Если я помещу свой return require('./anotherPageObject.js') вне getText(). Тогда он будет работать нормально. Но мне нужно выполнить некоторые операции с текстом, чтобы изменить мое соглашение об именах, чтобы он возвращал правильный объектный файл страницы. (я хочу вернуть файл pageobject с именем «general_information.page.js»)


person radio_head    schedule 23.08.2016    source источник
comment
Пожалуйста, обратитесь в местную службу технической поддержки: ваша клавиатура, по-видимому, включает заглавные буквы при наборе заголовков...   -  person Marc B    schedule 23.08.2016
comment
@MarcB пейджинг convertcase.net   -  person stuartd    schedule 23.08.2016


Ответы (1)


Метод 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);
});
person Florent B.    schedule 23.08.2016