【问题标题】:protractorJS chai - How do i use getText() to assert the text of elements within an array contains a string?protractorJS chai - 如何使用 getText() 断言数组中元素的文本包含字符串?
【发布时间】:2019-01-15 04:09:00
【问题描述】:

尝试对元素数组中找到的文本进行断言时返回错误

 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"]'));
}

这就是我尝试检查网络元素数组中的文本的方式

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

实际:我得到断言错误

预计: 测试通过。

请注意,在这些步骤的代码中,我有一个console.log sn-p,它输出一个字符串,确实包含搜索的字符串:测试控制台输出: com.reputation.imex.imp.ImportException: 这个配置文件已经存在并且有两个地方。此配置文件不支持使用 CSV 导入

【问题讨论】:

    标签: protractor cucumber chai gherkin


    【解决方案1】:

    importErrorsList 返回ElementArrayFinder

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

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

    但是,如果您可以得到ElementArrayFinder,请将您的expect 更改为:

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

    【讨论】:

    • 这段代码仍然导致同样的错误:directoriesPageObj.importErrorsList.getText().then(function(text) { //console.log('test console output: ' + text); expect(text).to.deep.contain(errorText); callback(); });
    【解决方案2】:

    这最终对我有用:

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

    【讨论】:

      猜你喜欢
      • 2015-12-29
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2018-04-28
      相关资源
      最近更新 更多