Проверка переключателя в Protractor + AngularJS

У меня есть переключатель на моей HTML-странице, и я хотел бы проверить значение текущего выбранного параметра

        <div>
            <input type="radio" name="radio1" value="enabled" checked/>
            <label for="radio1">Yes</label>
        </div>
        <div>
            <input type="radio" name="radio1" value="disabled" />
            <label for="radio1">No</label>
        </div>
        <br />

Я использую этот код на объекте страницы, который я использую для тестирования

var radio = $("input[type='radio'][name='radio1']:checked").val();

К сожалению я получаю

val() не определено

Как вернуть "включено" или "отключено" в зависимости от текущего состояния переключателя?

2 ответа

Решение

val() это функция jQuery, к которой у вас нет доступа, если вы не настроите Protractor таким образом. использование getAttribute('value') вместо этого, который возвращает обещание - см. ссылку getAttribute()

Так что, если вы используете его в утверждении, вы можете позволить expect решить само обещание:

var radio = $("input[type='radio']:checked")
expect(radio.getAttribute('value')).toEqual('enabled');

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

radio.getAttribute('value').then(function (val) {
    if(val === 'enabled') {
        // code
    }
});

Вместо "включено" значение = 1.

// используя TS

      static myElement = element
    .all(by.css('input[type="radio"]:checked'))
    .get(0);

expect(this.myElement.getAttribute('value')).toEqual(
      '1'
    );
Другие вопросы по тегам