सरू: यदि तत्व मौजूद नहीं है तो परीक्षण करें


145

मैं एक चेक बॉक्स पर क्लिक करने में सक्षम होना चाहता हूं और परीक्षण करना चाहता हूं कि एक तत्व अब सरू में DOM में नहीं है। क्या कोई सुझाव दे सकता है कि आप इसे कैसे करते हैं?

//This is the Test when the check box is clicked and the element is there
cy.get('[type="checkbox"]').click();
cy.get('.check-box-sub-text').contains('Some text in this div.')

मैं ऊपर परीक्षण के विपरीत करना चाहता हूं। इसलिए जब मैं इसे फिर से क्लिक करता हूं तो क्लास के साथ div DOM में नहीं होना चाहिए।


2
मैं नीचे के वोट के बारे में आश्चर्य करता हूं
Maccurt

यह सवाल मेरे लिए मायने
रखता है

मुझे पता है कि यह आपके प्रश्न से संबंधित नहीं है, लेकिन मैं वास्तव में उत्सुक हूं। कुछ का उपयोग करने का निर्णय क्या था जो सिर्फ क्रोम का समर्थन करता है और सरू के बारे में क्या बेहतर है? मैं ओपन-सोर्स प्रोजेक्ट Courgette github.com/canvaspixels/courgette पर काम कर रहा हूं और सोच रहा था कि हर कोई सरू की तरफ क्या आकर्षित कर रहा है।
एलेक्स्रोजर्स

1
मुझे सरू पसंद है क्योंकि अधिकांश भाग के लिए यह आसान है और यह सिर्फ काम करता है। मुझे इसका केवल क्रोम में उपयोग होने के साथ ही समस्या मिलती है, लेकिन मेरे लिए मैं इसके साथ रह सकता हूं।
मैक्रर्ट

cy.get('.check-box-sub-text').contains('Some text in this div.')कुछ मामलों में (कुछ उपकरणों पर) काम नहीं हो सकता है। आप इसे बदल सकते हैं यह cy.contains('.check-box-sub-text', 'Some text in this div.')उसी तरह से काम करेगा।
उलु

जवाबों:


183

वैसे यह काम करने लगता है, इसलिए यह बताता है कि मेरे पास .should () के बारे में जानने के लिए कुछ और है

cy.get('.check-box-sub-text').should('not.exist');

4
नमस्ते! मैं बहुत समान कोड का उपयोग कर रहा हूं: cy.get(data-e2e="create-entity-field-relation-contact-name").should('not.exists')लेकिन यह विफल रहता है getऔर फिर shouldकई बार आह्वान करने की कोशिश करता है , जिनमें से प्रत्येक विफल रहता है ... कोई भी विचार है कि मैं क्या गलत कर रहा हूं? अग्रिम धन्यवाद
Volk

क्षमा करें, मैंने अभी आपकी टिप्पणी देखी, क्या आपका चयनकर्ता डेटा विशेषता पर काम कर रहा है? क्या आप टिप्पणियों में अपना HTML पेस्ट कर सकते हैं? वह चयनकर्ता मुझे अजीब लगता है!
Maccurt

@ मुझे लगता है कि cy.get('[data-e2e="create-entity-field-relation-contact-name"]').should('not.exists')काम करना चाहिए।
यिंगयांग

8
@Maccurt, @YingYang: वास्तव में मुझे गलती मिली, और यह मूर्खतापूर्ण था: इसमें बेमानी sहै: .should('not.exists')->.should('not.exist')
volk

इसके बजाय () क्या लूप में स्थिति के ऊपर लपेटना संभव है? धन्यवाद
user2451016

24

आप एक ऐसे पाठ की खोज भी कर सकते हैं जिसका अस्तित्व नहीं है:

cy.contains('test_invite_member@gmail.com').should('not.exist')

यहाँ आपको सरू में परिणाम है: 0 matched elements

यहाँ छवि विवरण दर्ज करें


2
इसने मेरे लिए काम नहीं किया, containsसमय समाप्त हो गया और परीक्षण विफल हो गयाCypressError: Timed out retrying: Expected to find content: 'Im not supposed to be here' but never did.
टिम एबेल

मैंने अपने उत्तर में एक उदाहरण के साथ और स्पष्टीकरण जोड़ा। उपयोगकर्ता को हटाने के बाद test_invite_member@gmail.com, अगर ईमेल कहीं मौजूद है तो Im जाँच। परिणाम है 0 element। सरू के किस संस्करण का उपयोग कर रहे हैं?
एलन

अद्यतन के लिए चीयर्स। npx cypress --version- Cypress package version: 3.5.0 Cypress binary version: 3.5.0
टिम एबेल

1
यह मेरे लिए अब काम कर रहा है, मुझे वास्तव में यकीन नहीं है कि मैंने क्या याद किया। आपकी मदद के लिए धन्यवाद
टिम एबेल

सरू में मेरे लिए काम नहीं करता है। 4. यह निकाले गए तत्व के लिए काम करता है, ऐसा तत्व नहीं है जो बिल्कुल भी मौजूद नहीं होना चाहिए (उदाहरण के लिए जब सर्वर साइड रेंडरिंग का परीक्षण किया जाता है)
एरिक ब्यूरल

16
cy.get('[data-e2e="create-entity-field-relation-contact-name"]').should('not.exist');

कुछ गलत संदेश छिपाए जाने के कारण कुछ गलत परिणाम हो सकते हैं। इसका इस्तेमाल करना बेहतर हो सकता है

.should('not.visible');

उस स्तिथि में।


2
यदि यह DOM में मौजूद नहीं होता। अदृश्य कार्य नहीं होता? मुझे इसे आज़माना है। धन्यवाद!!!!
Maccurt

2
मेरे लिए यह बिल्कुल विपरीत था! ( should('not.exist')एक गलत तय should('not.be.visible'))
पॉल मेलेरो

यदि यह डोम में मौजूद नहीं है, तो यह काम नहीं करेगा। यदि आप सरू की लॉग की जांच करते हैं तो आपको कुछ ऐसा मिलेगा जिसकी अपेक्षा अपरिभाषित न हो और दिखाई न दे। तो एक तरह से दिखाई न देना वास्तव में कवर नहीं होता है और एक दावे में दिखाई नहीं देता है
शिव श्रीनिवासन

5

यहाँ मेरे लिए क्या काम किया गया है:

cy.get('[data-cy=parent]').should('not.have.descendants', 'img')

मैं जाँचता हूँ कि कुछ के <div data-cy="parent">अंदर कोई चित्र नहीं है। मूल प्रश्न के बारे में, आप data-cy="something, i.e. child"आंतरिक नोड्स पर विशेषता सेट कर सकते हैं और इस दावे का उपयोग कर सकते हैं:

cy.get('[data-cy=parent]').should('not.have.descendants', '[data-cy=child]')

3

Https://docs.cypress.io/guides/references/assertions.html#Existence के अनुसार

// retry until loading spinner no longer exists
cy.get('#loading').should('not.exist')

यह उस स्थिति के लिए काम करता है जिसे हटाया जा रहा है। लेकिन इस मामले में कि आप चाहते हैं कि यह कभी मौजूद न हो ... docs.cypress.io/guides/references/assertions.html#Existence यह तब तक पीछे रहेगा जब तक यह दूर नहीं हो जाता। यह वास्तव में शीर्षक समस्या के लिए काम नहीं करता है जो कि ज्यादातर लोगों की तलाश में है।

हालाँकि यदि आप यह परखना चाहते हैं कि वह चीज़ हमारे मामले में कभी मौजूद नहीं है।

// Goes through all the like elements, and says this object doesn't exist ever
cy.get(`img[src]`)
        .then(($imageSection) => {
            $imageSection.map((x, i) => {
                expect($imageSection[x].getAttribute('src')).to.not.equal(`${Cypress.config().baseUrl}/assets/images/imageName.jpg`);
            });
        })


0

आप नीचे दिए गए कोड का भी उपयोग कर सकते हैं

expect(opportunitynametext.include("Addon")).to.be.false

या

should('be.not.be.visible')

या

should('have.attr','minlength','2')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.