Как определить, проверена ли радиокнопка?

Я использую webrat с огурцом, и я бы хотел проверить, проверен ли переключатель уже, когда я нахожусь на странице. Как я могу это сделать? Я не нашел никакого шага в webrat, который может это сделать.

Ответ 1

expect(find_field("radio_button_name")).to be_checked

Ответ 2

input("#my_box").should be_checked

Ответ 3

Есть случаи, когда вы не можете полагаться на флажках с идентификаторами или ярлыками или при изменении текста меток. В этом случае вы можете использовать метод have_selector из webrat.

Из моего рабочего кода (где у меня нет идентификаторов на флажках).

response_body.should have_selector 'input[type=radio][checked=checked][value=information]'

Объяснение: test вернет true, если в теле документа содержится радиокнопка (input[type=radio]), которая отмечена и имеет значение "информация"

Ответ 4

Просто изменил флажок 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

Ответ 5

Вы можете использовать встроенный флажок в 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

Ответ 6

Обернутый Йеспер Ронн-Йенсен свою функцию + добавленное имя, которое используется рельсами:

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

Ответ 7

    And the "Obvious choice" checkbox should be checked

Хотя это может быть радиокнопка, но код будет работать. Это просто проверка полей, помеченных этим текстом.

Ответ 8

Вы можете использовать метод checked? на своем поле

expect(find_field("radio_button_id").checked?).to eq(true)