我正在尝试读取测试用例选择的单选按钮的值,但是我总是遇到这样的错误:
预计“开”为“ M”。
从上述错误中我了解到,量角器期望的值为“ On”而不是“ M”。
我的问题很简单:我无法读取所选单选按钮的输入值。
很少有更好的理解方案。
isValSelected
的值最初设置为false,如果用户明确选择单选按钮或用户从可用名称列表中进行选择,则该值为true 过去几天,我一直无法解决此问题。任何帮助,将不胜感激。我也尝试过兑现诺言,但到目前为止没有任何成果。
我的标记:
<div class="col-md-6 form-group">
<div class="radio-class">
<div class="radio-field1">
<input type="radio" [value] = "'M'" name="gender" id="radioM" class="form-control" [(ngModel)] = "radioM" [attr.disabled]="isValSelected?'':null" [checked]="isValSelected && radioM=== 'M'" />
<label for="radioM">Male</label>
</div>
<div class="radio-field2">
<input type="radio" [value] = "'F'" name="gender" id="radioF" class="form-control" [(ngModel)] = "radioF" [attr.disabled]="isValSelected?'':null" [checked]="isValSelected && radioF === 'F'" />
<label for="radioF">Female</label>
</div>
</div>
</div>
我的页面对象:
MRadioLabel() {
return element(by.css("label[for='radioM']"));
}
MRadioInput() {
return element(by.id('radioM'));
}
我的测试用例:
let newForm: myPo;
it('should read selected radio button value', () => {
expect(newForm.MRadioInput().getAttribute('checked')).toBeFalsy();
newForm.MRadioLabel().click()
expect(newForm.MRadioInput().getAttribute('checked')).toBeTruthy();
expect(newForm.MRadioInput().getAttribute('value')).toBe('M');
newForm.submitButton().click();
browser.driver.sleep(10000);
})
答案 0 :(得分:0)
Angular不能识别/处理value属性-如here所述,复选框的默认值为“ on”。如果将HTML更改为[attr.value] = "'M'"
,则期望语句将成功。
但是,当您选中或取消选中单选按钮时,该值实际上并没有改变,因此,如果您要测试是否选择了单选按钮,那么查看被选中的属性就足够了。我认为您实际上只是想要value = "M"
,因为您正在测试radioM === M
是否。