2009-07-23 10 views
8

मैं ककड़ी के साथ webrat का उपयोग कर रहा हूँ और मैं परीक्षण करना चाहता हूं कि एक पृष्ठ पर पहले से ही एक रेडियो बटन चेक किया गया है या नहीं। मैं यह कैसे कर सकता हूं? मुझे वेब्रेट में कोई कदम नहीं मिला जो ऐसा कर सकता है।मैं कैसे निर्धारित कर सकता हूं कि रेडियो बटन पहले से चेक किया गया है या नहीं?

उत्तर

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

इस विधि काम नहीं करता लगता है। मैं Capybara 2.4.1 का उपयोग कर रहा हूँ। @evedovelli द्वारा सुझाए गए 'find_field' विधि ने चाल की है। –

+0

मैं सुझाव देना चाहूंगा कि "चाहिए be_checked" लेकिन इसके बजाय: उम्मीद करें (find_field ("my_boxt"))। Be_checked – Tommyixi

6

ऐसे मामले हैं जब आप आईड्स या लेबल वाले चेकबॉक्स पर भरोसा नहीं कर सकते हैं या जहां लेबल टेक्स्ट बदलता है। इस मामले में आप Webrat से have_selector विधि का उपयोग कर सकते हैं।

मेरे कामकाजी कोड से (जहां मेरे पास चेकबॉक्स पर आईडी नहीं है)।

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

स्पष्टीकरण: परीक्षण सही वापस आ जाएगी, तो दस्तावेज़ के मुख्य भाग एक रेडियो बटन (input[type=radio]) जो चेक किया गया है शामिल हैं और कहा कि मूल्य "जानकारी"

1

आप web_steps में निर्मित चेकबॉक्स मिलान का उपयोग कर सकते है .rb:

And the "Bacon" checkbox should be checked 

हालांकि, आपको लगता है कि इसी चेकबॉक्स इनपुट क्षेत्र की आईडी से मेल खाता अपने चेकबॉक्स पर कोई लेबल की आवश्यकता होगी। रेल में f.label सहायक पहले तर्क में आईडी के रूप में उपयोग करने के लिए एक स्ट्रिंग लेता है। ,

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

किसी भी मामले में देखने के लिए आप HTML सही मिल गया है कि इस निर्देश का उपयोग करें:: आप एक स्ट्रिंग फ़ील्ड नाम और चेकबॉक्स नाम भी शामिल है कि निर्माण करने के लिए हो सकता है

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

हालांकि यह एक रेडियो बटन हो सकता है, लेकिन कोड काम करेगा। यह सिर्फ उस पाठ के साथ लेबल किए गए फ़ील्ड की जांच कर रहा है।

2

बस रेडियो बटन करने के लिए एक 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 
1

लिपटा जेस्पर Ronn-जेन्सेन उसके समारोह + जोड़े गए नाम जो रेल द्वारा किया जाता है:

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 

या नई वाक्य रचना में:

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