如何使用量角器读取无线电场的值

时间:2018-11-26 18:57:16

标签: angular jasmine protractor angular-e2e

我正在尝试读取测试用例选择的单选按钮的值,但是我总是遇到这样的错误:

  

预计“开”为“ M”。

从上述错误中我了解到,量角器期望的值为“ On”而不是“ M”。

我的问题很简单:我无法读取所选单选按钮的输入值。

很少有更好的理解方案。

  1. 我的单选按钮没有选择默认值。
  2. 如果用户选择一个现有成员,则默认情况下将选择一个单选按钮值。
  3. 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);
  })

1 个答案:

答案 0 :(得分:0)

Angular不能识别/处理value属性-如here所述,复选框的默认值为“ on”。如果将HTML更改为[attr.value] = "'M'",则期望语句将成功。

但是,当您选中或取消选中单选按钮时,该值实际上并没有改变,因此,如果您要测试是否选择了单选按钮,那么查看被选中的属性就足够了。我认为您实际上只是想要value = "M",因为您正在测试radioM === M是否。