का उपयोग करते हुए:
Ruby: ruby 1.9.3dev (2011-09-23 revision 33323) [i686-linux]
Rails: 3.2.9
Capybara: 2.0.3
मेरे पास एक रेल एप्लिकेशन है जिसमें एक लिंक है जिसे क्लिक करने पर एक AJAX पोस्ट अनुरोध सबमिट करना चाहिए और एक जेएस प्रतिक्रिया वापस करनी चाहिए।
लिंक कोड:
link_to("Send Notification", notification_path(user_id: user_id), remote: true, method: :post)
जेएस प्रतिक्रिया (.js.haml फ़ाइल) लिंक मौजूद है पृष्ठ पर निम्नलिखित छिपा div टॉगल करना चाहिए:
js.haml फ़ाइल सामग्री:
:plain
var notificationStatusContainer = $('#notification_status');
notificationStatusContainer.val("#{@notification_status_msg}");
notificationStatusContainer.show();
मैं नोटिफ़िकेशन भेजने के अपने परिदृश्य का परीक्षण कर रहा था और उपयोगकर्ता को Cucumber (Cucumber -rails gem in Capybara सपोर्ट से निर्मित ) का उपयोग करके अधिसूचना स्थिति संदेश प्रदर्शित कर रहा था
मैं यह जांचने की कोशिश कर रहा था कि तत्व में id: नोटिफिकेशन_स्टैटस मेरी चरण परिभाषा में सफल प्रतिक्रिया पर दिखाई दे रहा था। इसके लिए मैं निम्नलिखित प्रश्न का उत्तर दे रहा हूं:
page.find('#notification_status').should be_visible
page.should have_selector('#notification_status', visible: true)
page.should have_css('#notification_status', visible: true)
page.find('#notification_status', visible: true)
page.find(:css, 'div#notification_status', visible: true)
उपरोक्त में से किसी ने भी मेरे लिए काम नहीं किया और मेरे कदम को विफल कर दिया। उपरोक्त 5 स्निपेटों में से अंतिम 4 त्रुटि के साथ विफल हो गए:
'expected to find css "#notification_status" but there were no matches. Also found "", which matched the selector but not all filters. (Capybara::ExpectationNotMet)'
जो अजीब था क्योंकि निम्नलिखित कथन सही तरीके से गुजर रहा था:
page.has_selector?('#notification_status')
और वास्तव में मैंने उपयोग करते हुए पृष्ठ स्रोत का निरीक्षण किया
print page.html
जो दिखा
<div style='' id='notification_status'></div>
जिसकी उम्मीद थी।
अंत में मुझे यह लिंक capybara एक तत्व की विशेषताओं पर जोर देता है, जिसमें दिखाया गया था कि कच्चे तरीके से किसी तत्व की विशेषता का निरीक्षण कैसे करें।
इसके अलावा, मैं दिखाई देने के लिए कैपिबारा प्रलेखन में पाया गया? विधि ( http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element#v अदृश्य%3F-instance_method ) निम्नलिखित जानकारी:
Not all drivers support CSS, so the result may be inaccurate.
इस प्रकार मैं इस नतीजे पर पहुंचा कि जब किसी तत्व की दृश्यता का परीक्षण कैपिबारा के दृश्यमान परिणामों पर निर्भर नहीं करता है? एक सीएसएस चयनकर्ता का उपयोग करते समय और किसी तत्व के लिंक कैपिबारा में सुझाए गए समाधान का उपयोग करते हुए विधि
मैं निम्नलिखित के साथ आया:
module CustomMatchers
def should_be_visible(css_selector)
find(css_selector)['style'].should_not include('display:none', 'display: none')
end
end
World(CustomMatchers)
उपयोग:
should_be_visible('#notification_status')