量角器如何使用相同的css类断言多个元素都会显示出来

时间:2016-10-13 05:29:27

标签: protractor

在量角器中,我想声明显示所有具有特定css类的元素。但是像这样的语法不起作用。

expect(element.all(by.className('bill')).each(x => x.isDisplayed().toBeTruthy());

实现这一目标的量角器方法是什么?这是吗?

let els = element.all(by.className('bill'));
els.then(x => {
  x.forEach(y => {
    expect(y.isDisplayed()).toBeTruthy();
  })
});

这很有效,但似乎过于复杂。

2 个答案:

答案 0 :(得分:2)

您可以先将项目转换为包含map的布尔数组,然后断言该数组不包含false

var elems = element.all(by.className('bill'));
expect(elems.map(e => e.isDisplayed())).not.toContain(false);

您还可以使用reduce来汇总isDisplayed返回的状态:

var elems = element.all(by.className('bill'));
expect(elems.reduce((acc, e) => acc && e.isDisplayed())).toBeTruthy();

答案 1 :(得分:0)

最后,我这样做了:

let billEls = element.all(by.className('bills'));

billEls.then(elements => {
  elements.forEach(el => {
    expect(el.isDisplayed()).toBeTruthy();
  })
});

但更喜欢@ FlorentB的.reduce方法。