Capybara में यदि संभव हो तो fill_in का उपयोग कैसे करें


90

मैं निम्नलिखित करना चाहूंगा, लेकिन पहले तर्क के रूप में किसी लोकेटर की अपेक्षा 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 के साथ उपयोग के लिए regex के माध्यम से एक क्षेत्र खोजने के सर्वोत्तम तरीके का कोई विचार?

जवाबों:


160

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

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

हालांकि आपके विशिष्ट उदाहरण के लिए, fill_inतत्व को खोजने में सक्षम होना चाहिए जैसा कि आप जानते हैं कि यह आईडी है:

fill_in 'donation_pledge_hundreds', with: "10"

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

8
अन्य अंतर्निहित विधियों के बजाय 'सेट' का उपयोग करके सावधान रहें, क्योंकि यह मूल्य बदलने के बाद घटनाओं को ट्रिगर नहीं करता है।
— डैन कैडिगन

@DanCaddigan और यही कारण है कि यह f3ck3d लगता है: / फिर आप कैसे करते हैं?
— बेन

आप find(:css, "...").set("10").send_keys(:return)बाद में रिटर्न प्रेस करने के लिए उपयोग कर सकते हैं । यह प्रासंगिक घटनाओं को ट्रिगर करता है। मैंने इसका परीक्षण नहीं किया है लेकिन find(:css, "...").set("10").trigger(:blur)अगर आपकी बात है तो आप भी कर सकते हैं ।
— गोंडलेज़

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]


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

यह ध्यान देने योग्य है कि आप अपने खोज को चेन कर सकते हैं।

@modal = find(".modal")
@modal.find('input[name=foo]').set "bar"

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

कोड केवल उत्तर हतोत्साहित करते हैं। कृपया कुछ स्पष्टीकरण जोड़ें कि यह समस्या को कैसे हल करता है, या यह मौजूदा उत्तरों से कैसे भिन्न है। समीक्षा से
— निक

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.