Почему я получаю TypeError: Невозможно прочитать свойство 'getText' с неопределенной ошибкой, даже если моя ссылка на веб-элемент верна? - PullRequest
0 голосов
/ 11 января 2019

Я получаю сообщение об ошибке при запуске теста транспортира.

Вот ссылка на webelement в файле directoryies.page.js:

get importErrorsList(){
    return element.all(by.css('[ng-if="error.error.detailMessage"]'));
}

Вот скриншот webelement и его информации об источнике: webelement and source И, наконец, вот шаг, который я использую для ссылки на webelement, который возвращает ошибку:

Then(/^The list of import errors contains this error message: "([^"]*)"$/, function (errorText, callback) {
        browser.wait(EC.visibilityOf(importPageObj.alertMsg), timeouts.EC_TIMEOUT).then(function(){
            browser.wait(() => {  
//the next line causes the error 
expect(directoriesPageObj.importErrorsList.getText()).to.eventually.contain(errorText).and.notify(callback);
                }, timeouts.EC_TIMEOUT).then(() => {
                browser.wait(EC.and(EC.visibilityOf(importPageObj.headerDropDownInWebView), EC.elementToBeClickable(importPageObj.headerDropDownInWebView)), timeouts.EC_TIMEOUT).then(() => {
                    callback();
                });
            });
        });
    });

Может ли кто-нибудь помочь мне понять, почему это не работает?

1 Ответ

0 голосов
/ 12 января 2019

вы не инициализировали directoriesPageObj. Итак, перед его использованием вы должны сделать:

const directoriesPageObj = new DirectoriesPageObj()

и после него вы можете использовать directoriesPageObj переменную. Например:

Then(/^The list of import errors contains this error message: "([^"]*)"$/, function (errorText, callback) {
        browser.wait(EC.visibilityOf(importPageObj.alertMsg), timeouts.EC_TIMEOUT).then(function(){
            browser.wait(() => {  
const directoriesPageObj = new DirectoriesPageObj();
expect(directoriesPageObj.importErrorsList.getText()).to.eventually.contain(errorText).and.notify(callback);
                }, timeouts.EC_TIMEOUT).then(() => {
                browser.wait(EC.and(EC.visibilityOf(importPageObj.headerDropDownInWebView), EC.elementToBeClickable(importPageObj.headerDropDownInWebView)), timeouts.EC_TIMEOUT).then(() => {
                    callback();
                });
            });
        });
    });
...