量角器:如何等待所有元素变得不可见

时间:2018-06-14 02:39:03

标签: protractor element wait invisible

我有一个Web应用程序,我正在使用Protractor进行测试。不幸的是,当它加载时,应用程序的各个区域都可以显示重叠的加载微调器。所以我想要等待,直到所有的旋转器在我继续之前变得不可见。旋转器变得不可见,而不是完全从DOM中消失。

这是我到目前为止所得到的。不幸的是,它一直运行到等待超时。

function waitForAllElementsToDisappear(elementArray) {
    return function () {
        return elementArray.reduce(function (acc, elem) {
            if (acc == null) acc = true; 
            try {
                return elem.isDisplayed().then(function(displayValue) {
                    if (displayValue)  return false; 
                    else  return acc; 
                });
            }
            catch (err) {
                return acc;
            }
        });
    };
};

browser.wait(this.waitForAllElementsToDisappear(
    element.all(by.css('div[ng-if~="mmc.menuTree.showSpinner"]'))), 
    5000);

希望这太复杂了,并且有一个很好的解决方案。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

函数waitForAllElementsToDisappear中有一些错误的地方:

function waitForAllElementsToDisappear(elementArray) {

    return elementArray.isDisplayed().then(function(arrs){
        // arrs is an array like [true, false, false, true]
        // when there is no true in the array, means all spinners are not visible
        // we can end the waiting now
        return arrs.includes(true) === false
    });

};