Javascript 如何在量角器中选中多个复选框

Javascript 如何在量角器中选中多个复选框,javascript,angularjs,checkbox,protractor,Javascript,Angularjs,Checkbox,Protractor,我已经了解了如何通过此链接选中一个复选框: 然而,我想知道如何做,以检查我的视图上的所有复选框是否都将被选中 目前,下面的代码仅检查是否选中了一个复选框: .clickElementById('user-' + data.userIndex) .expect( element('input[ng-model="user.checked"]') .attr('checked') ).toBeTruthy() 这就是我想要的,但是当我进入下

我已经了解了如何通过此链接选中一个复选框:

然而,我想知道如何做,以检查我的视图上的所有复选框是否都将被选中

目前,下面的代码仅检查是否选中了一个复选框:

    .clickElementById('user-' + data.userIndex)
    .expect(
        element('input[ng-model="user.checked"]')
        .attr('checked')
    ).toBeTruthy()
这就是我想要的,但是当我进入下一个测试,通过一个按钮选择所有复选框时,我想通过循环所有复选框来测试它们是否被选中。抱歉重复我的话


Ta

使用
元素。all
创建指定元素的数组,然后您可以循环或直接调用它们,即

element.all(by.model('user.checked').then(function(btn) {
    expect(btn[0].attr('checked')).toBe('true');
});
还是用循环

element.all(by.model('user.checked').each(function(btn) {
     // iterates through each btn
     expect(btn.attr('checked')).toBe('true');
});
来源:

您也可以将其选中一个复选框-是否选中所有复选框:

var allChecked = element.all(by.model('user.checked')).reduce(function(acc, btn) {
    return btn.getAttribute('checked')).then(function(checked) {
        return acc && (checked == 'true');
    });
}, true);
expect(allChecked).toBe(true);

要添加到这一点,实际上可以使用量角器附带的each方法。简单的替换了当时的承诺。啊,真的!我忘记了
.each()
——比for循环好得多。我更新了我的答案。如果您使用.css的
by
,那么您可以使用
isSelected
。只是另一种方式。