我试图通过css获取一个复选框列表,并且仅在未选中时单击复选框,我设法获取列表,但由于某种原因我无法验证该元素是否被选中。
我做错了什么?
element.all(By.css('#dropdown li input')).then(function(rows) {
expect(rows.length).toBe(number_of_widgets);
for (var i = 0; i < number_of_widgets; i++) {
rows[i].isSelected().then(function(selected) {
if (!selected) {
rows[i].click();
}
waits(100);
});
}
});
答案 0 :(得分:1)
您可以尝试使用以下内容替换内循环:
..
rows.then(function(element){
var eleUnchecked = !element.getAttribute('checked');
if (eleUnchecked) {
return element.click();
}
}
..
答案 1 :(得分:0)
element.all(By.css('#dropdown li input')).then(function(rows) {
expect(rows.length).toBe(number_of_widgets);
for (var i = 0; i < number_of_widgets; i++) {
rows[i].isSelected().then(function(selected) {
if (!selected) {
rows[i].click();
}
if (selected) {
rows.isSelected = false ;
}
waits(100);
});
}
});
答案 2 :(得分:0)
我不知道你从哪里得到wait
,但这对我来说都是异步的。试试这个,它会使i
与你期望的相同:
element.all(By.css('#dropdown li input')).then(function(rows) {
expect(rows.length).toBe(number_of_widgets);
for (var i = 0; i < number_of_widgets; i++) {
rows[i].isSelected().then(function(i){return function(selected) {
if (!selected) {
rows[i].click();
}
waits(100);
}}(i));
}
});
答案 3 :(得分:0)
您需要将promise绑定到循环中的变量
it('应该将活动类添加到选定的行',function(){ var todoList = element.all(by.repeater('task in tasks'));
todoList.then(function (items) {
for (var i = 0; i < items.length ; i++) {
var input = todoList.get(i).element(by.css('input'));
var promise = input.isSelected();
promise.then(function (sts) {
if (sts == false) {
this.click();
}
}.bind(input));
}
element.all(by.css('.taskRow.active')).then(function (i) {
expect(i.length).toBe(10);
});
});
});
答案 4 :(得分:0)
您可以使用以下解决方案。
element.all(by.css('#dropdown li input')).then(function(rows) {
expect(rows.length).toBe(number_of_widgets);
rows.each(function(row) {
row.isSelected().then(function(selected) {
if (!selected) {
rows[i].click();
}
waits(100);
});
});
});
答案 5 :(得分:-1)
for (var i = 1; i < number_of_widgets+1; i++) {
if (!(element(by.css('#dropdown li input:nth-child(i)')).isSelected())) {
element(by.css('#dropdown li input:nth-child(i)')).click()
}
}