Ответ 1
expect(find_field("radio_button_name")).to be_checked
Я использую webrat с огурцом, и я бы хотел проверить, проверен ли переключатель уже, когда я нахожусь на странице. Как я могу это сделать? Я не нашел никакого шага в webrat, который может это сделать.
expect(find_field("radio_button_name")).to be_checked
input("#my_box").should be_checked
Есть случаи, когда вы не можете полагаться на флажках с идентификаторами или ярлыками или при изменении текста меток. В этом случае вы можете использовать метод have_selector
из webrat.
Из моего рабочего кода (где у меня нет идентификаторов на флажках).
response_body.should have_selector 'input[type=radio][checked=checked][value=information]'
Объяснение: test вернет true, если в теле документа содержится радиокнопка (input[type=radio]
), которая отмечена и имеет значение "информация"
Просто изменил флажок web_step на радиокнопку
Добавьте следующий шаг к web_steps.rb
Then /^the "([^"]*)" radio_button(?: within "([^"]*)")? should be checked$/ do |label, selector|
with_scope(selector) do
field_checked = find_field(label)['checked']
if field_checked.respond_to? :should
field_checked.should be_true
else
assert field_checked
end
end
end
И вы можете написать следующее, чтобы проверить, отмечена ли данная кнопка raido или нет
And the "Bacon" radio_button within "div.radio_container" should be checked
Вы можете использовать встроенный флажок в web_steps.rb:
And the "Bacon" checkbox should be checked
Однако вам нужно будет иметь метку на вашем флажке, которая соответствует идентификатору соответствующего поля ввода флажка. Помощник f.label в Rails принимает строку для использования в качестве идентификатора в первом аргументе. Возможно, вам придется создать строку, которая включает имя поля и имя флажка:
f.label "lunch_#{food_name}, food_name
f.radio_button :lunch, food_name
В любом случае используйте эту директиву, чтобы убедиться, что у вас правильный HTML:
Then show me the page
Обернутый Йеспер Ронн-Йенсен свою функцию + добавленное имя, которое используется рельсами:
Then /^I should see that "([^"]*)" is checked from "([^"]*)"$/ do |value, name|
page.should have_selector "input[type='radio'][checked='checked'][value='#{value}'][name='#{name}']"
end
And the "Obvious choice" checkbox should be checked
Хотя это может быть радиокнопка, но код будет работать. Это просто проверка полей, помеченных этим текстом.
Вы можете использовать метод checked?
на своем поле
expect(find_field("radio_button_id").checked?).to eq(true)