2009-07-23 12 views

risposta

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

sembra che questo metodo non funziona più. Sto usando Capybara 2.4.1. Il metodo 'find_field' suggerito da @evedovelli ha fatto il trucco. –

+0

Suggerirei di non utilizzare "dovrebbe essere_controllato", ma invece: aspettare (find_field ("my_boxt")). Per essere_chiappato – Tommyixi

6

Ci sono casi in cui non è possibile fare affidamento su caselle con id o etichette o dove il testo dell'etichetta cambia. In questo caso è possibile utilizzare il metodo have_selector da webrat.

Dal mio codice di lavoro (dove non ho id sulle caselle di controllo).

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

Spiegazione: prova restituirà true se il corpo del documento contiene un pulsante di opzione (input[type=radio]) che è controllato e che ha il valore di "informazioni"

1

È possibile utilizzare il matcher casella di controllo integrato in web_steps .RB:

And the "Bacon" checkbox should be checked 

Tuttavia, è necessario avere un etichetta sulla casella di controllo che corrisponde all'ID del campo di input casella di controllo corrispondente. L'helper f.label in Rails utilizza una stringa da utilizzare come ID nel primo argomento. Potrebbe essere necessario costruire una stringa che include il nome del campo e il nome casella di controllo:

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

In ogni caso, usare questa direttiva per vedere che hai il codice HTML corretto:

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

Anche se potrebbe essere un pulsante di scelta, ma il codice funzionerà. Sta solo controllando i campi etichettati con quel testo.

2

appena cambiato una casella di controllo web_step al pulsante di scelta

Aggiungere il seguente passo per 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 

e si può scrivere la seguente per verificare se il pulsante di Raido data è selezionata o meno

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

Avvolto Jesper Rønn-Jensen sua funzione + nome aggiunto che viene utilizzato dai binari:

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 in nuova sintassi:

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