সাইপ্রেস: উপাদান উপস্থিত না থাকলে পরীক্ষা করুন


145

আমি একটি চেক বাক্সে ক্লিক করতে এবং পরীক্ষা করতে সক্ষম হতে চাই যে সাইপ্রেসের কোনও ডিওএম-তে আর কোনও উপাদান নেই। কেউ কীভাবে আপনি এটি করতে পরামর্শ দিতে পারেন?

//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.')

আমি উপরের পরীক্ষার বিপরীতটি করতে চাই। সুতরাং আমি যখন আবার ক্লিক করব তখন ক্লাসের সাথে ডিভটি ডোমে থাকা উচিত নয়।


2
ডাউন ভোট সম্পর্কে আমি আশ্চর্য হয়েছি
ম্যাককার্ট

প্রশ্নটি আমার কাছে বোধগম্য
ড্যান কার্লসেট্ট

আমি বুঝতে পারি এটি আপনার প্রশ্নের সাথে সম্পর্কিত নয় তবে আমি সত্যিই আগ্রহী। এমন কিছু ব্যবহারের সিদ্ধান্ত কী ছিল যা কেবল ক্রোমকে সমর্থন করে এবং সাইপ্রাস সম্পর্কে আরও ভাল কী? আমি ওপেন-সোর্স প্রকল্প কোরজিট 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

ভাল এটি কাজ করে বলে মনে হচ্ছে, সুতরাং এটি আমাকে বলেছিল .শাল্ড () সম্পর্কে আরও কিছু শিখতে হবে

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বেশ কয়েকবার অনুরোধ করার চেষ্টা করে, যার প্রতিটিটি ব্যর্থ হয় ... কোনও ধারণা আমি কী ভুল করছি? অগ্রিম ধন্যবাদ
ভল্ক

দুঃখিত আমি আপনার মন্তব্যটি কেবল দেখেছি, আপনার নির্বাচকটি কোনও ডেটা অ্যাট্রিবিউট নিয়ে কাজ করছেন? আপনি মন্তব্যগুলিতে আপনার এইচটিএমএল পেস্ট করতে পারেন? সেই নির্বাচকটি আমার কাছে অদ্ভুত লাগছে!
ম্যাককার্ট

@ ভোলক আমার মনে হয় cy.get('[data-e2e="create-entity-field-relation-contact-name"]').should('not.exists')কাজ করা উচিত।
ইং ইয়ং

8
@ ম্যাকচার্ট, @ ইয়ংইয়াং: আসলে আমি ভুলটি খুঁজে পেয়েছি এবং এটি একদম নির্বোধ ছিল: এখানে অতিরিক্ত কাজ sকরা উচিত: .should('not.exists')->.should('not.exist')
ভলক

() পরিবর্তে লুপের উপরের শর্তটি মোড়ানো কি সম্ভব? ধন্যবাদ
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, ইমেলটি কোথাও উপস্থিত রয়েছে কিনা তা আমি পরীক্ষা করে দেখছি। ফলাফল হয় 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
যদি এটি ডিওএম-তে বিদ্যমান না থাকে তবে তা কাজ করতে পারে না? আমি সর্বতভাবে চেষ্টা করব। ধন্যবাদ !!!!
ম্যাককার্ট

2
আমার জন্য এটি ছিল সম্পূর্ণ বিপরীত! (should('not.exist') একটি ভুল ঠিক করা হয়েছে should('not.be.visible'))
পল ম্যালেরো

যদি এটি ডোমে বিদ্যমান না থাকে তবে not.be.visible কাজ করবে। আপনি যদি সাইপ্রেস লগগুলি পরীক্ষা করেন তবে আপনি প্রত্যাশিত না হওয়ার জন্য অপরিবর্তিত প্রত্যাশার মতো কিছু পাবেন এবং জোর দিয়ে যাবেন। সুতরাং কোনও উপায়ে দৃশ্যমান না হওয়া আসলে কভারের অস্তিত্ব নেই এবং একটি দৃ
as়তার

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# উপস্থিতি অনুসারে

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

এটি যে কেসটিকে সরানো হচ্ছে তার পক্ষে এটি কাজ করে। তবে আপনি যে ক্ষেত্রে এটির অস্তিত্ব চান না সে ক্ষেত্রে ... ডকস.সাইপ্রেস.আই.ও. / গাইডস / রেফারেন্সস / এ্যাসারশনস html# উপস্থিতি এটি অদৃশ্য না হওয়া পর্যন্ত এটি আবার চেষ্টা করবে। এটি শিরোনাম সমস্যার জন্য সত্যই কাজ করে না যা বেশিরভাগ লোকেরা সন্ধান করবে।

তবে আপনি যদি পরীক্ষা করতে চান যে জিনিসটি আমাদের ক্ষেত্রে কখনও বিদ্যমান না।

// 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')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.