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

时间:2016-11-14 16:34:39

标签: javascript selenium protractor chai

我正在开发一个函数,它将在使用过滤器功能后读取元素的文本。我打印出了返回的文本,它正在获取元素,但我不认为我理解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,但是我注意到了两件事。如果为false,它就不会像我在if语句中告诉它那样破坏。另外,我得到一个typeError:true不是一个明显的错误..我相信逻辑听起来不错,但不是JS。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

量角器的element.all()支持getText()方法,该方法将元素中显示的文本作为数组返回。然后您可以使用expect方法轻松比较结果数组。

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