2009-07-23 16 views

Odpowiedz

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

Wydaje ta metoda nie działa. Używam Capybara 2.4.1. Metoda "find_field" zasugerowana przez @evedovelli poradziła sobie z tym. –

+0

Proponuję nie używać "powinien be_checked", ale zamiast: oczekiwać (find_field ("my_boxt")). Be_checked – Tommyixi

6

Istnieją przypadki, kiedy nie można polegać na checkboxes posiadające identyfikatory lub etykiet lub których zmiany napisu. W takim przypadku możesz użyć metody have_selector z Webrat.

Z mojego działającego kodu (gdzie nie mam identyfikatorów na checkboxach).

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

Objaśnienie: test zwróci true, jeśli ciało dokumentu zawiera przełącznik (input[type=radio]), który jest sprawdzony i że ma wartość „informacja”

1

Można użyć wbudowanego w matcher wyboru w web_steps .rb:

And the "Bacon" checkbox should be checked 

Musisz jednak mieć etykietę w polu wyboru odpowiadającym identyfikatorowi odpowiedniego pola wejściowego pola wyboru. Pomocnik f.label w Railsach używa łańcucha jako identyfikatora w pierwszym argumencie. Być może trzeba będzie zbudować ciąg, który zawiera nazwę pola i nazwę pola wyboru:

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

W każdym przypadku korzystać z tej dyrektywy, aby zobaczyć, że masz HTML poprawne:

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

Chociaż może to być przycisk opcji, ale kod będzie działał. Po prostu sprawdza pola oznaczone tym tekstem.

2

Właśnie zmienił wyboru web_step przycisku radiowego

Dodaj następujący krok do 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 

I można napisać następujące czynności, aby sprawdzić, czy dany przycisk Raido jest sprawdzane, czy nie

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

Owinięty Jesper Rønn-Jensen jego funkcja + dodana nazwa, która jest używana przez szyn:

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 

lub w nowej składni:

expect(find_field("radio_button_name")).to be_checked 
Powiązane problemy