2015-06-10 4 views
7

में मौजूद है, मुझे ककड़ी के साथ समस्या है। मुझे सुनिश्चित करने का कोई तरीका नहीं मिल रहा है कि दिए गए चयनकर्ता के साथ तत्व डीओएम में प्रस्तुत किया गया है। मैं चाई के साथ ककड़ी का उपयोग कर रहा हूं। https://github.com/cucumber/cucumber-js वर्तमान रिटर्न ऑब्जेक्ट है - कोई फर्क नहीं पड़ता कि तत्व मौजूद है या नहीं। तो सवाल यह है कि यह जांचने के लिए कि क्या डोम में तत्व मौजूद है या नहीं।ककड़ी-जेएस और चाई कैसे उम्मीद कर सकते हैं कि दिए गए चयनकर्ता के साथ तत्व डीओएम

मैं एक सीखा सबक साझा करने के लिए प्रश्न संपादित करूंगा। मैंने प्रलेखन को भी नाथन थॉम्पसन को धन्यवाद देना चाहता हूं। isPresent() एक वादा देता है जो इस पृष्ठ पर तत्व मौजूद है या नहीं, यह हल करेगा।

http://angular.github.io/protractor/#/api?view=Protractor.prototype.isElementPresent

कोड उदाहरण एक छोटे से भ्रामक है। वादों से

element(by.id('someId')).isPresent().then(function(isElementVisible) { 
    expect(isElementVisible).to.be.true; 
}); 

या उपयोग चाय: तो अगर आप की उम्मीद करना चाहते हैं तो किसी दिए गए चयनकर्ता के साथ तत्व डोम में मौजूद आप कुछ इस तरह उपयोग करना चाहिए।

expect(element.isPresent()).to.eventually.be.false 

हालांकि, "अंततः" शब्द अप्रिय लगता है। हम निश्चित रूप से सुनिश्चित नहीं करना चाहते हैं कि अंततः सुनिश्चित करें। :)

Here इस प्रश्न के बारे में मेरे व्यक्तिगत ब्लॉग में आलेख देखा जा सकता है।

+1

'isPresent' विधि कहां परिभाषित किया गया है? ककड़ीजेएस या चाई? –

+0

isPresent प्रोटैक्टर एपीआई से विधि है। –

+0

[isPresent] के अनुसार (http://angular.github.io/protractor/#/api?view=ElementFinder.prototype.isPresent) दस्तावेज, यह केवल परीक्षण करता है कि दस्तावेज़ पेड़ में तत्व मौजूद है या नहीं। क्या आप यह पता लगाने की कोशिश कर रहे हैं कि तत्व इसके बजाय दृश्यमान है या नहीं? एक तत्व अदृश्य हो सकता है, लेकिन दस्तावेज़ पेड़ में अभी भी "मौजूद" हो सकता है। –

उत्तर

10

प्रोटैक्टर रिटर्न में लगभग सभी फ़ंक्शन वादे करते हैं जो उन मानों को हल करेंगे जो आप वास्तव में परीक्षण करना चाहते हैं। तो अगर आप सिर्फ निम्नलिखित की तरह कुछ करने के लिए कोशिश कर रहे हैं, यह हमेशा असफल हो जायेगी, क्योंकि यह वादा वस्तु isPresent द्वारा दिया पर जोर देते हुए है:

expect(element.isPresent()).to.be.false 

मैं चाय इस तरह परिस्थितियों से निपटने के लिए chai-as-promised प्लगइन का उपयोग कर की सिफारिश करेंगे । यह eventually श्रृंखला प्रदान करता है जो आपके लिए वादे को हल करेगा और परिणामी मूल्य पर जोर देगा। उपर्युक्त उदाहरण इस तरह दिखेगा:

expect(element.isPresent()).to.eventually.be.false 
0

क्यों तत्व वापस करने के वादे की अपेक्षा करते समय हम "झूठी" का उपयोग करते हैं? शायद आप का मतलब है: expect(element.isPresent()).to.be.true?

+0

यह प्रश्न का उत्तर नहीं प्रदान करता है। किसी लेखक से स्पष्टीकरण की आलोचना या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें। यदि आप [कमाई] (// meta.stackoverflow.com/q/146472/169503) पर्याप्त [प्रतिष्ठा] (// stackoverflow.com/help/whats-reputation) आप [किसी भी पोस्ट पर टिप्पणी करने में सक्षम होंगे] (/ /stackoverflow.com/help/privileges/comment)। –

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