2012-03-21 18 views
7

मैं अनुरोध चश्मे लिख रहा हूं ... मैं कैपिबरा का उपयोग करता हूं ... और मुझे कुछ मोडल विंडोज़ में परेशानी है।(कैपिबरा) एक्सेस मोडल विंडो

जो मैं वास्तव में अपने परीक्षण में चाहता हूं वह एक प्रारूप को भरना है जो एक मोडल विंडो में पॉप अप करता है।

मॉडल ट्विटर से बूटस्ट्रैप (http://twitter.github.com/bootstrap/javascript.html#modals) के साथ बनाया गया है ... और यह संक्रमणों के एक सेट के माध्यम से जा रहा है (लेकिन मुझे नहीं पता कि यह मेरे द्वारा प्रासंगिक होने के लिए प्रासंगिक है या नहीं)।

मैं मैं वेब पर पाया कुछ समाधान, जैसे की कोशिश की है: यह सुनिश्चित करने के

एक) page.driver.browser.window_handles

page.driver.browser.switch_to.window(page.driver.browser.window_handles.last) 

बी) wait_until उपयोग करने के साथ पृष्ठों के बीच स्विच कि मोडल लोड

def modal_wrapper_id 
    '#modal-edit' 
end 

def modal_visible 
    wait_until { find(modal_wrapper_id).visible? } 
rescue Capybara::TimeoutError 
    flunk 'Expected modal to be visible.' 
end 

लेकिन उनमें से कोई भी काम नहीं किया ... इसलिए मैंने उस समय विंडो हैंडल की संख्या प्रस्तुत करने के लिए सोचा था जब मोडल विंडो सक्रिय है ...

तो मैं इस किया था:

puts page.driver.browser.window_handles.length.should == 2 

और मैं यह मिल गया:

Failure/Error: page.driver.browser.window_handles.length.should == 2 
      expected: 2 
      got: 1 (using ==) 

मैं क्या समझ से, व्यावहारिक रूप से मेरी मोडल विंडो मौजूद नहीं है।

इस पर किसी भी मदद की सराहना की जाएगी।

धन्यवाद।

उत्तर

1

मैंने कैपिबरा का उपयोग नहीं किया, लेकिन आपकी समस्या को इस तथ्य के साथ करना है कि बूटस्ट्रैप का मोडल डायलॉग वास्तव में एक छद्म-मोडल है, जिसमें वास्तव में यह केवल div तत्व और इसके पीछे एक पारदर्शी ओवरले है। एक वास्तविक मोडल संवाद window.confirm का उपयोग करके बनाया जाएगा, उदाहरण के लिए, जिसे वास्तव में आपके नमूना कोड का उपयोग करके पूछताछ की जा सकती है। आपके मामले में आपको मोडल div तत्व id देना चाहिए, और इसे कैपिबारा से पूछने के लिए हैंडल के रूप में उपयोग करना चाहिए और इसके प्रदर्शन तक "ब्लॉक" तक प्रतीक्षा करें। हालांकि कुछ भी परीक्षण नहीं किया था।

1

डिफ़ॉल्ट उपयोग द्वारा Capybara: rack_test ड्राइवर। क्या आप पुष्टि कर सकते हैं कि आप सेलेनियम वेबड्राइवर या अन्य ड्राइवर का उपयोग कर रहे हैं जहां एक मॉडलबॉक्स खोलना वास्तव में संभव है?

+0

मैं सेलेनियम का उपयोग कर रहा हूं! 'Capybara.default_driver =: सेलेनियम' – adritha84

+0

ठीक है, आपने अपनी पोस्ट में इसका उल्लेख नहीं किया है। चूंकि मुझे कुछ भी गलत नहीं दिख रहा है, इसलिए मैं यह सुनिश्चित कर दूंगा कि आप वास्तव में अपने टेस्ट सूट में पॉप-अप का आह्वान करेंगे (कुछ क्लिक करके, आदि, मुझे व्यवसाय तर्क नहीं पता)। इसके अलावा आप केवल परीक्षण उद्देश्यों के लिए 'आक्रमणकारी पॉप-अप' कार्रवाई के बाद 10 नींद डाल सकते हैं। – socjopata

+0

मैंने अपने spec में कुछ 'नींद' क्रियाएं डालीं और मैंने इसे कई तरीकों से परीक्षण किया है ... और, जैसा कि आपने कहा था, मुझे कुछ भी गलत नहीं दिख रहा है ... लेकिन फिर भी, मुझे निर्दिष्ट त्रुटि मिलती है, जिसका मतलब है कि उस मोडल विंडो में हैंडल मौजूद नहीं है, इस प्रकार खिड़की मौजूद नहीं है। – adritha84

संबंधित मुद्दे