यहाँ ज्ञान के मौजूदा शरीर में जोड़ने के लिए:
JS परीक्षणों के लिए, Capybara को दो धागे (एक RSpec के लिए, एक रेल के लिए) और दूसरी प्रक्रिया (ब्राउज़र) सिंक में रखना है। यह सबसे मिलान और नोड-खोजने के तरीकों में प्रतीक्षा (कॉन्फ़िगर अधिकतम प्रतीक्षा समय तक) के द्वारा करता है।
Capybara में वे विधियाँ भी हैं जो मुख्य रूप से प्रतीक्षा नहीं करती हैं Node#all
। उनका उपयोग करना आपके चश्मे के बारे में बताने जैसा है कि आप चाहते हैं कि वे रुक-रुक कर विफल हों।
स्वीकृत उत्तर बताता है page.first('selector')
। यह अवांछनीय है, कम से कम जेएस चश्मा के लिए, क्योंकि Node#first
उपयोग करता हैNode#all
।
अगर आप कैपिबारा को इस तरह कॉन्फ़िगर करते हैं , तो Node#first
यह इंतजार करेगा :
# rails_helper.rb
Capybara.wait_on_first_by_default = true
यह विकल्प Capybara 2.5.0 में जोड़ा गया था और डिफ़ॉल्ट रूप से गलत है।
जैसा कि आंद्रेई ने उल्लेख किया है, आपको इसके बजाय उपयोग करना चाहिए
find('selector', match: :first)
या अपना चयनकर्ता बदलें। कॉन्फ़िगरेशन या ड्राइवर की परवाह किए बिना या तो अच्छी तरह से काम करेगा।
चीजों को और जटिल करने के लिए, कैपिबारा के पुराने संस्करणों में (या एक सक्षम विकल्प के साथ), #find
खुशी से अस्पष्टता को नजरअंदाज कर देगा और बस पहले मिलान चयनकर्ता को वापस कर देगा। यह या तो महान नहीं है, क्योंकि यह आपके चश्मे को कम स्पष्ट करता है, जिसकी मैं कल्पना करता हूं कि अब डिफ़ॉल्ट व्यवहार क्यों नहीं है। मैं बारीकियों को छोड़ दूँगा क्योंकि वे पहले ही ऊपर चर्चा कर चुके हैं।
और अधिक संसाधनों: