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.