Как прочитать значение радиополя с помощью транспортира - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь прочитать значение переключателя, которое выбрано в моем тестовом примере, но я всегда получаю ошибку, подобную этой:

Ожидается, что «вкл.» Будет «M».

Что я понимаю из вышеприведенной ошибки, так это то, что транспортир ожидает значение «Вкл.» Вместо «М».

Моя проблема довольно проста: я не могупрочитайте входное значение радиокнопки, которую я выбираю.

Несколько сценариев для лучшего понимания.

  1. Для моих радиокнопок не выбрано значение по умолчанию.
  2. Значение радиокнопки будет выбрано по умолчанию, если пользователь выбирает уже существующий элемент.
  3. isValSelected Значение изначально установлено в false и будет истинным, если пользователь выберет радиокнопку.явно или если пользователь выбирает из списка доступных имен

Я не мог решить эту проблему в течение последних нескольких дней.Любая помощь будет оценена.Я тоже пытался работать с обещаниями, но на данный момент ничего не работает.

Моя разметка:

     <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 голосов
/ 17 декабря 2018

Атрибут значения не распознается / не обрабатывается Angular - как описано здесь , значение по умолчанию для флажка «включено».Ваше ожидаемое утверждение выполнится успешно, если вы измените HTML на [attr.value] = "'M'".

. Однако значение на самом деле не меняется, когда вы устанавливаете или снимаете флажок, поэтому, если вы пытаетесь проверить, является лиПереключатель выбран, просмотра проверенного атрибута должно быть достаточно.Я думаю, что вы на самом деле просто хотите value = "M", так как вы тестируете, если radioM === M.

...