如何在ProtractorJS中使用.isdisplay()和.each()

How to use .isDisplayed() with .each() in ProtractorJS for Angular

本文关键字:isdisplay each ProtractorJS      更新时间:2023-09-26

我在我的Angular应用程序中设置了一个测试,进入并点击一个元素,它应该看看是否显示某个对象。我觉得下面的代码应该可以工作,尽管我知道isdisplay()是针对单个元素而不是多个元素。我知道有一个。each()函数,但不确定它如何适合这个。我如何使用。each()与isdisplay ()?

it('should flip cards and check to make sure graph is visible', function(){
var cards = element.all(by.repeater('card in cards'));
var backOfCard = element.all(by.css('#current-status ul li .back canvas'));
expect(browser.getCurrentUrl()).toEqual('http://localhost:8000/app/#/dashboard');
expect(cards.count()).toBe(4);
cards.click().then(function(){
    expect(backOfCard.isDisplayed()).toBe([true, true, true, true]);
});
});

实际上可以在ElementArrayFinder上调用isDisplayed():

expect(backOfCard.isDisplayed()).toBe([true, true, true, true]);

也可以在这里使用map():

var values = backOfCard.map(function (elm) {
    return elm.isDisplayed();
});
expect(values).toBe([true, true, true, true]);

并且,您甚至可以reduce()它有一个布尔值来检查:

var allDisplayed = backOfCard.reduce(function (acc, elm) {
    return elm.isDisplayed().then(function (isDisplayed) {
        return isDisplayed && acc;
    });
}, false);
expect(allDisplayed).toBeTrue();