javascript - 从 element.all Protractor 返回计数总和

标签 javascript angularjs jasmine protractor

我需要计算所有匹配过滤器的元素的总和。

函数如下:

this.filterPoolRecordGrid = function (searchText, callback) {
    var defer = protractor.promise.defer();
    element.all(By.repeater("(rowRenderIndex, row) in rowContainer.renderedRows track by $index")).then(function (eles) {
        var countR = 0;
        eles.forEach(function (ele) {
            ele.all(By.repeater('(colRenderIndex, col) in colContainer.renderedColumns track by col.uid')).filter(function (ele) {
                return  ele.getText().then(function (text) {
                    return text.indexOf(searchText) > -1;
                })
            }).count().then(function (value) {
                countR += value;
                callback(countR);
            });
        });
    });

    defer.fulfill();
    return defer.promise;
};

下面是我的使用方法:

it('Test valid input into groups search box', function () {
            poolRecordsPage.filterPoolRecordGrid('two', function (count) {
                console.info(count);
            });

通过使用回调,我能够返回总和,但是,因为我使用了 element.forEach。输出如下,但我只需要最后一个,即最后 2 个。

Started

0 0 0 0 0 1个 1个 1个 2个 2

最佳答案

使用map()相反:

this.filterPoolRecordGrid = function (searchText) {
    return element.all(By.repeater("(rowRenderIndex, row) in rowContainer.renderedRows track by $index")).map(function (ele) {
        return ele.all(By.repeater('(colRenderIndex, col) in colContainer.renderedColumns track by col.uid')).filter(function (ele) {
            return  ele.getText().then(function (text) {
                return text.indexOf(searchText) > -1;
            })
        }).count();
    }).then(function (counts) {
        return counts.reduce(function(a, b) { return a + b; }, 0);
    });
};

用法:

poolRecordsPage.filterPoolRecordGrid('two').then(function (count) {
    console.log(count);
});

或者:

expect(poolRecordsPage.filterPoolRecordGrid('two')).toEqual(10);

关于javascript - 从 element.all Protractor 返回计数总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36520152/

相关文章:

javascript - 检索 JSON 数组元素值

javascript - React OIDC-Client IE Promise 未定义

javascript - 如何根据属性值制定在运行时添加 Angular 部分的指令

javascript - 如何将外部库包含到单元测试中::Angular2-CLI

javascript - 错误: [$injector:unpr] Unknown provider in jasmine test when routeprovider service is injected in a controller

javascript - 管理父切换案例

javascript - 如何将原型(prototype)类声明更改为 jquery?

javascript - 基于键为 : [array of dropdown options] pairs? 的对象创建一系列下拉菜单

javascript - ng-checked 在 Angular 1.6 中不强制复选框保持未选中状态

jasmine - AngularJS 测试错误 : Unknown provider: $_httpBackend_Provider <- $_httpBackend_