量角器JS chai - 我如何使用getText()断言数组中的元素文本包含字符串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了量角器JS chai - 我如何使用getText()断言数组中的元素文本包含字符串?相关的知识,希望对你有一定的参考价值。

尝试断言在元素数组中找到的文本时,我收到一个错误

 AssertionError: expected [ Array(1) ] to include 'This profile exists already and has two places.'

我在页面对象文件中声明了webelement引用

我创建了一个步骤,其中包含一些代码来验证元素数组中的文本

这是在页面对象中声明的webelement引用:

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

这是我尝试检查Web元素数组中的文本

                directoriesPageObj.importErrorsList.getText().then(function(text) {         
                    console.log('test console output: ' + text);
                    expect(text).to.contain(errorText);
                    callback();
                });

实际:我得到断言错误

预期:测试通过。

请注意,在步骤的代码中,我有一个console.log片段,它输出一个字符串,其中包含搜索的字符串:test console output:com.reputation.imex.imp.ImportException:此配置文件已存在且有两个位置。此配置文件不支持使用CSV导入

答案

importErrorsList返回ElementArrayFinder

如果应用程序可能只返回一个与css选择器匹配的元素,则将您的方法更改为:

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

但是,如果你可以让ElementArrayFinder将你的expect改为:

expect(text).to.deep.contain(errorText);

另一答案

这最终对我有用:

expect(directoriesPageObj.importErrorsList.getText()).to.eventually.contain(errorText).and.notify(callback);

以上是关于量角器JS chai - 我如何使用getText()断言数组中的元素文本包含字符串?的主要内容,如果未能解决你的问题,请参考以下文章

element.getText()。然后(函数)没有被执行

如何使用页面对象在 Nightwatch.js 中运行多个 chai 断言?

如何在量角器测试中测试重新排序 Ag-Grid 列?

使用带有量角器的phantomjs访问iframe中的web元素

如何通过 Protractor 使用 vanilla JS 从 API 获取 json

当它被包装在提供者组件中时,如何使用 mocha + 酶 + chai 测试反应原生组件