2009-07-23 13 views

Respuesta

9
input("#my_box").should be_checked 
+0

parece que este método ya no funciona. Estoy usando Capybara 2.4.1. El método 'find_field' sugerido por @evedovelli hizo el truco. –

+0

Sugeriría que no se use "should be_checked" pero en su lugar: expect (find_field ("my_boxt")). Be_checked – Tommyixi

6

Hay casos en los que no puede confiar en las casillas de verificación que tienen identificadores o etiquetas o donde el texto de la etiqueta cambia. En este caso, puede usar el método have_selector de webrat.

De mi código de trabajo (donde no tengo ids en casillas de verificación).

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

Explicación: La prueba devolverá true si el cuerpo del documento contiene un botón de radio (input[type=radio]) que se comprueba y que tiene el valor "información"

1

Puede utilizar el matcher casilla incorporada en web_steps .rb:

And the "Bacon" checkbox should be checked 

Sin embargo, usted necesita tener una etiqueta en su casilla de verificación que coincide con el ID del campo de entrada casilla correspondiente. El ayudante de etiqueta f en Rails toma una cadena para usar como ID en el primer argumento. Puede que tenga que construir una cadena que incluye el nombre del campo y el nombre casilla:

f.label "lunch_#{food_name}, food_name 
f.radio_button :lunch, food_name 

En cualquier caso, utilizar esta directiva para ver que usted tiene el HTML correcto:

Then show me the page 
0
And the "Obvious choice" checkbox should be checked 

Aunque podría ser un botón de opción, pero el código funcionará. Solo está buscando un campo etiquetado con ese texto.

2

acaba de cambiar a una casilla de verificación web_step botón de radio

Añadir el siguiente paso para 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 

y usted puede escribir lo siguiente para comprobar si se marca el botón raido dado o no

And the "Bacon" radio_button within "div.radio_container" should be checked 
1

envuelta Jesper Rønn-Jensen su función + nombre añadido que es utilizado por los carriles:

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 
11
find_field("radio_button_name").should be_checked 

o en la nueva sintaxis:

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