2013-03-21 10 views
10

मैं चीजों को सूखा रखने के लिए चाहते में समय खोने के बिना मौजूद रहने पर, इसलिए मैं अपने चरणों में से एक में निम्नलिखित करना चाहते हैं:जाँच हो रही है एक तत्व Capybara

if first(:css, "#blabla") != nil 
    find_by_id(blabla).click 
end 
find_by_id(....) 
.... 

इसका मतलब यह है, कि यह एक के लिए दिखेगा कुछ तत्व, और यदि यह मौजूद है, तो यह उस पर क्लिक करेगा। यदि नहीं, तो मेरे पास समय नहीं खोएंगे (मेरा डिफ़ॉल्ट प्रतीक्षा समय 20 सेकेंड है, जो अगर मैं वहाँ first के बजाय find डाल इस्तेमाल किया जाएगा।

मुख्य मुद्दा यह है कि मैं समय था जब के लिए जाँच खोने के लिए नहीं करना चाहते हैं इस मामले में एक निश्चित तत्व, लेकिन मैं यह भी है कि अगर यह एक अच्छा तरीका है सोच रहा हूँ।

उत्तर

19

मुझे लगता है कि अपने कोड ब्राउज़र को अनावश्यक दूसरा प्रश्न करता है समस्या का हल नहीं

(आप पहले से ही first(:css, "#blabla") तो find_by_id(blabla) करने की कोई आवश्यकता नहीं है)

मैं आपको एक प्रश्न का उपयोग कर तत्व खोजने के लिए प्रस्ताव देता हूं:

el = first('#blabla') 
el.click unless el.nil? 

ध्यान दें कि first ब्लॉक नहीं होने पर कोई खोने का समय नहीं है।

हालांकि, first यह जांच नहीं करता कि पृष्ठ पर कोई अन्य तत्व नहीं है। आप इसे देखने के लिए :maximum जोड़ सकते हैं:

el = first('#blabla', maximum: 1) 
el.click unless el.nil? 
+0

अद्यतन उत्तर बहुत उपयोगी है। धन्यवाद! मैंने तदनुसार अपना कोड बदल दिया है। – TrashyMcTrash

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