检查量角器上的多个元素上是否存在类

时间:2018-08-10 12:06:58

标签: javascript protractor

我使用此函数检查元素是否具有特定的类:

hasClass: function (element, cls) {
    return element.getAttribute('class').then(function (classes) {
        return classes.split(' ').indexOf(cls) !== -1;
    });
}

页面中有几个元素,可以包含一个特定的类(“ is-break”)来更改其样式。所有这些元素都具有“ free-terms-center__day-list--el__wrapper”类。

我正在做类似的事情:

 element.all(by.css(".free-terms-center__day-list--el__wrapper")).count().then(value=>{

        for (let index = 0; index < value; index++) {
            console.log("heheh")
            expect( helper.hasClass(element.all(by.css(".free-terms-center__day-list--el__wrapper")).get(index), ".is-break")).to.eventually.equal(true);

        }

    })

似乎不起作用,hasClass在for循环内返回false,但是元素上存在该类。

但是如果我做这样的事情:

    const blocks =  element.all(by.css(".free-terms-center__day-list--el__wrapper"));

    expect( helper.hasClass(blocks.first(), ".is-break")).to.eventually.equal(true);
    expect( helper.hasClass(blocks.last(), ".is-break")).to.eventually.equal(true);
    expect( helper.hasClass(blocks.get(5), ".is-break")).to.eventually.equal(true);

作品

我想这与诺言有关,但是我可以在for循环内完成所有期望吗?

1 个答案:

答案 0 :(得分:1)

如果您使用的是chai-as-promised库,则可以将整个代码简化为:

element.all(by.css('.free-terms-center__day-list--el__wrapper')).each((elementToCheck) => {
    expect(elementToCheck.getAttribute('class')).to.eventually.contains('is-break');
});