1

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

预计“开”为“M”。

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

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

几个场景以便更好地理解。

  1. 我的单选按钮没有选择默认值。
  2. 如果用户选择了一个已经存在的成员,则默认情况下会选择一个单选按钮值。
  3. isValSelectedvalue 最初设置为 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);
  })
4

1 回答 1

0

Angular 无法识别/处理 value 属性 - 如此所述,复选框的默认值为“on”。如果您将 HTML 更改为 ,您的 expect 语句将成功[attr.value] = "'M'"

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

于 2018-12-17T06:41:58.117 回答