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