Angularjs 重新启用复选框后,选择量角器给出错误读数
我有一个复选框列表,顶部有一个Angularjs 重新启用复选框后,选择量角器给出错误读数,angularjs,selenium,protractor,angularjs-e2e,e2e-testing,Angularjs,Selenium,Protractor,Angularjs E2e,E2e Testing,我有一个复选框列表,顶部有一个all复选框。切换“全部”复选框时,所有复选框都将被取消选择或选中 默认情况下/初始情况下,all复选框处于启用状态,并且选中了所有复选框。因此,我将取消选中所有复选框,所有复选框将取消选中。这在量角器中没有问题: it('all checkbox is deselected', function() { modelsAllCheckbox.click(); expect(modelsAllCheckbox.isSelected()).to.ev
all
复选框。切换“全部”复选框时,所有复选框都将被取消选择或选中
默认情况下/初始情况下,all
复选框处于启用状态,并且选中了所有复选框。因此,我将取消选中所有复选框,所有复选框将取消选中。这在量角器中没有问题:
it('all checkbox is deselected', function() {
modelsAllCheckbox.click();
expect(modelsAllCheckbox.isSelected()).to.eventually.be.false;
});
it('all models should be deselected', function() {
ppvPercentages.modelChoices().then(function(modelChoices) {
modelChoices.forEach(function(modelChoice) {
expect(modelChoice.isSelected()).to.eventually.be.false;
});
});
});
this.modelChoices = function(rowNumber) {
return element.all(by.repeater('model in vehicleCheckboxes.models'));
}
然后我重新启用all
复选框。在浏览器中,我可以直观地看到,所有复选框中的所有复选框均已选中,所有复选框均已成功选中。Hoewever,在断言它们都被选中的测试中失败:
it('all button is re-enabled', function() {
modelsAllCheckbox.click();
expect(modelsAllCheckbox.isSelected()).to.eventually.be.true;
// give time for all models to set
browser.sleep(3000)
});
it('all models are selected', function() {
ppvPercentages.modelChoices().then(function(modelChoices) {
modelChoices.forEach(function(modelChoice) {
expect(modelChoice.isSelected()).to.eventually.be.true;
});
});
})
全部的
{{model.description}}
我看到所有复选框都在浏览器中被选中。为什么
modelChoice.isSelected()
giving false而不是true up会重新启用all复选框 问题在于您查找复选框的方式。当前,由于您使用的是by.repeater()
定位器,所以您的目标是父div
元素:
<div ng-repeat="model in vehicleCheckboxes.models | orderBy: 'description' track by model.description">
作为补充说明,我认为您可以通过以下方式改进希望选中复选框的方式: 或者,通过使用: 或者,还有其他方法
<div ng-repeat="model in vehicleCheckboxes.models | orderBy: 'description' track by model.description">
this.modelChoices = function(rowNumber) {
return element.all(by.repeater('model in vehicleCheckboxes.models')).all(by.model('model.checked'));
}
ppvPercentages.modelChoices().each(function (modelChoice) {
expect(modelChoice.isSelected()).to.eventually.be.true;
});
var allSelected = ppvPercentages.modelChoices().reduce(function (acc, modelChoice) {
return modelChoice.isSelected().then(function (isSelected) {
return acc && isSelected;
});
}, true);
expect(allSelected).to.eventually.be.true;