为什么我得到TypeError:即使我的Web元素引用正确,也无法读取未定义错误的属性'getText'?

时间:2019-01-11 14:42:52

标签: protractor cucumber chai gherkin

我在进行量角器测试时返回错误。

以下是directory.page.js文件中对Webelement的引用:

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 :(得分:1)

您没有初始化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();
                });
            });
        });
    });