Проверка переключателя в 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'
);