2011-12-16 5 views
80

मैं निम्नलिखित करना चाहता हूं लेकिन fill_in की प्रकृति के कारण पहली बार तर्ककर्ता के रूप में उम्मीद नहीं कर सकता।Capybara (यदि संभव हो) में ढूंढने के साथ fill_in का उपयोग कैसे करें

find(:css, "input[id$='donation_pledge_hundreds']").fill_in :with => "10" 

मैं भी

element = find(:css, "input[id$='donation_pledge_hundreds']") 
fill_in element.<method> , :with => "10" 

कर की कोशिश की है लेकिन कोई तरीकों कि वापसी किसी भी डेटा तत्व FILL_IN को पहचान करने के लिए कर रहे हैं।

fill_in के साथ उपयोग के लिए रेगेक्स के माध्यम से फ़ील्ड खोजने का सबसे अच्छा तरीका क्या है?

उत्तर

136

स्मृति से जा रहे हैं तो 100% सही नहीं किया जा सकता है, लेकिन मुझे लगता है कि आप set बजाय fill_in का उपयोग करते हैं आप तत्व में ही करने के लिए एक संदर्भ है:, fill_in

find(:css, "input[id$='donation_pledge_hundreds']").set("10") 

हालांकि अपने विशिष्ट उदाहरण के लिए

fill_in 'donation_pledge_hundreds', with: "10" 
+0

अच्छा आदमी है, यही कारण है कि एक है। उस विशेष फ़ील्ड का प्रयोग विभिन्न संदर्भों में किया जाता है (प्रमाणीकृत/प्रमाणीकृत नहीं) और इसलिए एक अलग फ़ील्ड आईडी लेता है। donation_pledge_hundreds फ़ील्ड आईडी का आम हिस्सा है इसलिए फ़ील्ड नाम के अंत की तुलना $ = – ants

+7

अन्य अंतर्निहित विधियों के बजाय 'सेट' का उपयोग करके सावधान रहें, क्योंकि यह मान बदलने के बाद ईवेंट ट्रिगर नहीं करता है। –

+14

बहुत भ्रमित इंटरफ़ेस ... तत्व के लिए एलिमेंट # fill_in केवल भरना चाहिए ... –

3
find("input[id$='donation_pledge_hundreds']").set "10" 

यह अपने पाता श्रृंखला यह देखते हुए कि आप कर सकते हैं लायक है: जैसा कि आप जानते हैं कि यह आईडी है तत्व को खोजने के लिए सक्षम होना चाहिए।

@modal = find(".modal") 
@modal.find('input[name=foo]').set "bar" 
5
एक विधि के बजाय

, आप :name या :id, उदा वापस जाने के लिए कोष्ठक का उपयोग कर सकते element = find(:css, "input[id$='donation_pledge_hundreds']") fill_in element[:name], :with => "10" एक ही दृष्टिकोण select के साथ प्रयोग किया जा सकता है - select my_type, from: find('select[name$="[type]"]')[:name]

0
fill_in <$id>, :with => 'text you want to fill in' 
संबंधित मुद्दे