只有在未选中的情况下,才能单击带量角器的复选框
click on check box with protractor only if not checked
我正试图通过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);
});
}
});
您可以尝试用以下内容替换内部循环:
..
rows.then(function(element){
var eleUnchecked = !element.getAttribute('checked');
if (eleUnchecked) {
return element.click();
}
}
..
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);
});
}
});
我不知道你从哪里得到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));
}
});
您需要将promise绑定到循环中的变量
它("应该将活动类添加到所选行",函数(){var todoList=element.all(通过.redurer('任务中的任务'));
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);
});
});
});
您可以使用以下解决方案。
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);
});
});
});
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()
}
}
相关文章:
- 如何在单击复选框后调用控制器方法
- 在GridView中,当单击复选框时,在网格的同一行中使用JavaScript将标签中的值添加到TextBox
- 在网页中单击复选框
- 单击复选框时显示日期选择器
- 选择全部单击复选框以及全部拒绝
- 在 Telerik RadGrid 中单击复选框时打开对话框窗口
- 在JS中单击复选框时显示总价
- 单击复选框时重定向
- 如何在单击复选框按钮时制作单选按钮
- 如何使用角度指令控制器动态单击复选框
- 如何通过单击复选框来显示或隐藏网络图表
- 单击复选框时的角度显示一个元素
- 复选框不能通过直接单击复选框来选中或取消选中
- 单击复选框时将此元素添加到收藏夹数组 + 后 Ajax 元素关系
- 单击复选框后未收到复选框事件
- 单击复选框时汇总隐藏字段的值不起作用
- 如何使文本输入框在单击复选框时变为不可写
- 如何在 JSP 中的“单击”复选框时创建删除按钮
- 如何通过单击复选框将文本元素从输入复制到另一个输入
- 单击复选框时如何在 jquery 中创建数组