javascript - 获取 promise 数组的大小( Protractor )

标签 javascript angularjs protractor

我有一个复选框列表,我想检查它们是否被选中。我想遍历对象数组并一一检查,但无法获取数组的大小。我尝试了以下两种方法,但出现了不同的错误。

var i, n;
    networkStatusDetail.detailsList.all(by.tagName('div')).then(function(arr){
        console.log(arr.length);
        for(i=0;i<; i++){
            arr.get(i).element(by.model('displayedsites[site.siteid]')).isSelected().then(function(checked){
                expect(checked).toBe(true);
            });
        }
    });

使用上面的代码,我得到一个错误,指出 arr.get() 不是一个有效的函数。

以下代码不起作用,因为我无法获取数组的大小。将数组的大小分配给另一个变量仅在 promise 函数内有效,但一旦在外部使用该变量,该值就消失了。

networkStatusDetail.detailsList.all(by.tagName('div')).then(function(size){
        n = size;
        console.log('n = '+n);
    });

    console.log('n outside '+ n);
for(i=0;i<n; i++){
        check.get(i).element(by.model('displayedsites[site.siteid]')).isSelected().then(function(checked){
    expect(checked).toBe(true);
   //   console.log(i);
        });
   }

2个控制台会分别打印512和undefined,说明promise函数外的n值不起作用。

如果我手动设置 for 循环的最大值,我只能让它工作,但这个值会随着时间而改变,所以它是不正确的。

如果有人可以帮助我了解如何执行此操作,将不胜感激。

最佳答案

你不需要知道有多少个复选框来遍历它们 - 使用 map()each()相反:

element.all(by.model('displayedsites[site.siteid]')).each(function (checkbox) { 
    return checkbox.isSelected().then(function (isSelected) {
        console.log(isSelected);
    });
});

关于javascript - 获取 promise 数组的大小( Protractor ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39498021/

相关文章:

php - 在 Yii 中,您可以用 JSON 而不是 HTML/XML 返回 HTTP 错误响应吗?

angularjs - 可以/如何将 Protractor 与 chutzpah 一起使用?

javascript - React Three.js 使场景中的对象变大,类似于 Canvas 大小

javascript - vis.js 的 onMoveGroup 示例

Javascript 纯文本字符编码

selenium - 使用 Selenium 和 Protractor/Jasmine 时出现 Chrome 自动化扩展错误

javascript - Protractor :计算所有超链接并在页面上测试它们

javascript - 如何在创建之前定义节点的行为?

javascript - 如何显示Jquery结果

javascript - 如何将对象的属性用于变量?