Promises 和 for 循环 - 尝试验证多元素文本

Promises and for loops - trying to validate multiple element text

我正在开发一个函数,该函数将在使用过滤器功能后读取元素的文本。我已经打印出返回的文本并且它正在获取元素,但是我不认为我理解 js promises..activeFilters 是我已经确定的 var。

this.verifyColorFilterFunctional = function(color) {
    var bool = true;
    activeFilters.count().then(function (count) {
        var amt = count - 1;
        for (var i = 0; i < amt; i++){
            activeFilters.get(i).getText().then(function(text) {
                bool = (color === text);
                console.log(bool);
            });
            if (!bool) {
                break;
            }
        }
    });
    return expect(bool).to.become(true);
};

console.log 根据需要打印出 true 和 false,但是我注意到两件事。当为假时,它不会像我在 if 语句中告诉它的那样中断。另外,我收到一个 typeError: true is not a thenable error.. 我相信逻辑在我脑海中听起来不错,但对 JS 来说却不是。任何帮助将不胜感激。

Protractor 的 element.all() 支持 getText() 方法,该方法将 return 您在元素中显示的文本作为 array.Then 您可以使用 expect 方法轻松比较结果数组。

this.verifyColorFilterFunctional = function(color) {
    activeFilters.getText().then(function (textArray) {
     expect(textArray).to.equal(Array(textArray.length-1).fill(color));
   });
}