Как заполнить поля динамической формы с помощью капибары
У меня есть форма, которая содержит поле выбора и текстовое поле.
Текстовое поле отображается динамически в зависимости от выбора. Если значение selectbox равно "Да", то текстовое поле будет отображаться, и наоборот. Я запускаю тест rspec и заполнил значение в поле выбора "Да"
select 'Yes', from: 'property[have_water_bills]'
Теперь я хочу заполнить значение в текстовом поле
fill_in 'property[irrigation_cycle_count]', with: 5
Но я получаю следующую ошибку.
Capybara::ElementNotFound:
Unable to find field "property[irrigation_cycle_count]"
То есть капибара не может найти динамический элемент. Кто-нибудь знает, как это исправить?
2 ответа
Наконец-то добился того, чтобы это работало, используя следующий фрагмент кода
page.execute_script("$('#have_water_bills').val('true').trigger('click')")
Полтергейст не имеет click
событие при выборе элемента из выбора. Генерирует focus
по выбору, change
на выбор, blur
по выбору. Это больше похоже на то, если пользователь выбрал опцию с помощью клавиатуры, а не с помощью мыши. Вы, вероятно, должны делать логику для отображения вашего текстового поля на change
событие в любом случае, так что оно работает, если люди используют мышь или клавиатуру для навигации по вашей странице. Также имеет смысл запускать логику "показать / скрыть" на change
событие, потому что это то, что вы на самом деле заботитесь, а не клики.