如何使用给定的 HTML 元素识别复选框值? angularjs-e2e

How do I identify checkbox value with given HTML element? angularjs-e2e

我需要一些关于以下问题的建议。当checkbox = checked时,会有属性值checked=checked,对于unchecks,属性不会存在,我无法唯一识别。在页面上,将有选中和未选中的复选框。 Dev 拒绝为我添加额外的属性,并说必须有一种方法来识别(存在或不存在)。

所以在我的测试页上,我有 10 个复选框,其中 3 个已选中,7 个未选中。

HTML 用于取消选中复选框

<input type="checkbox" disabled="disabled" ng-checked="item.unread">

HTML 选中复选框

<input type="checkbox" disabled="disabled" ng-checked="item.unread" checked="checked">

我的计数尝试 - 它会返回准确的数字,但最终会失败,因为数字可能会发生变化。

expect(element.all(by.css('input[checked="checked"]')).count()).toBe(2);

使用属性 - checked="checked"

识别选中项目没有问题
expect(element.all(by.css('input[checked="checked"]')).isSelected()).toBeTruthy();

但是当我检查未检查的项目时失败。

expect(element.all(by.css('input[type="checkbox"]')).isSelected()).toBeFalsy();

未选中项目的失败结果 - 7 个未选中和 3 个选中

[ false false false false true true false false true false]

谢谢

对于未检查的输入,您可以检查没有设置checked属性:

expect(element.all(by.xpath('//input[@type="checkbox" and not(@checked)]')).isSelected()).toEqual([false, false, false, false, false, false, false, false, false, false]);

如果它总是 3 个选中,7 个未选中,您也可以断言计数:

expect(element.all(by.xpath('//input[@type="checkbox" and not(@checked)]')).count()).toEqual(7);
expect(element.all(by.xpath('//input[@type="checkbox" and @checked="checked"]')).count()).toEqual(3);