Я использую webrat с огурцом, и я хотел бы проверить, проверяется ли переключатель, когда я нахожусь на странице. Как я могу это сделать? Я не нашел никакого шага в webrat, который может это сделать.Как определить, проверена ли радиокнопка?
ответ
input("#my_box").should be_checked
Есть случаи, когда вы не можете полагаться на флажках с идентификаторами или ярлыками или при изменении текста ярлыка. В этом случае вы можете использовать метод have_selector
от webrat.
Из моего рабочего кода (где у меня нет идентификаторов на флажках).
response_body.should have_selector 'input[type=radio][checked=checked][value=information]'
Объяснение: тест возвращает истину, если тело документа содержит переключатель (input[type=radio]
), который проверяется и имеет значение «информацию»
Вы можете использовать встроенный флажок Искатель в web_steps .rb:
And the "Bacon" checkbox should be checked
Однако, вы должны иметь ярлык на ваш флажок, соответствующий идентификатор соответствующего входного поля флажок. Помощник f.label в Rails принимает строку для использования в качестве идентификатора в первом аргументе. Вы, возможно, придется построить строку, которая включает в себя имя поля и имя CheckBox:
f.label "lunch_#{food_name}, food_name
f.radio_button :lunch, food_name
В любом случае, используйте эту директиву, чтобы увидеть, что у вас есть HTML правильный:
Then show me the page
And the "Obvious choice" checkbox should be checked
Хотя это может быть переключатель, но код будет работать. Это просто проверка полей, помеченных этим текстом.
Просто изменил 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
И вы можете написать следующее, чтобы проверить, отмечен ли данная кнопка Райдо или не
And the "Bacon" radio_button within "div.radio_container" should be checked
обернутого Jesper ронны-Jensen его функция + добавили имя, которое используется рельсами:
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
find_field("radio_button_name").should be_checked
или в новом синтаксисе:
expect(find_field("radio_button_name")).to be_checked
кажется этот метод больше не работает. Я использую Capybara 2.4.1. Метод 'find_field', предложенный @evedovelli, сделал трюк. –
Я бы предложил не использовать «should be_checked», а вместо этого: ожидать (find_field («my_boxt»)). Be_checked – Tommyixi