2017-12-11 101 views
9

Soru şu kadar basit. Cypress'te, testi çalıştırırken açılan yeni bir pencereye nasıl erişebilirim.Yeni bir pencereye giriş - cypress.io

Adımlar yeniden:

  1. testini çalıştırın. Bazı işlemlerden sonra yeni pencere açılır (url, doğada dinamiktir).
  2. Yeni pencerede alanları doldurun ve birkaç düğmeyi tıklatın.
  3. Yeni Pencerede gerekli işlemler tamamlandıktan sonra, yeni pencereyi kapatın ve ana pencereye geri dönün.
  4. Ana pencere ile yürütmeye devam edin. ilgi

Noktası: odak burada olanların kendi hiçbiri iframe ve confirmation box kullanmasıyla ilgili birkaç şey okudum, ama

main window -> new window -> main window 

olmalıdır. Tamamen yeni bir pencereye erişme ile ilgilidir. Selenium'da Window Handlers gibi bir şey. Maalesef bununla ilgili hiçbir şey bulamadı.

cevap

8

Güncel sürümde Cypress ile yeni pencerelere erişim mümkün değildir. Bununla birlikte, bu işlevsenin şimdi Cypress'te test edilebilmesinin birçok yolu vardır. Testlerinizi ayrı parçalara ayırabilir ve yine de uygulamanızın kapsam dahilinde olduğundan emin olabilirsiniz.

  1. uygulamanızda eylemi gerçekleştirirken, window.open olay bir window.open olayını dinlemek için cy.spy() kullanarak denir olmadığını kontrol etmek için bir test yaz.
cy.visit('http://localhost:3000', { 
    onBeforeLoad(win) { 
    cy.stub(win, 'open') 
    }) 
} 

// Do the action in your app like cy.get('.open-window-btn').click() 

cy.window().its('open').should('be.called') 
    yeni testte, yeni bir pencerede açıldı olurdu url gitmek için cy.visit() kullanmak alanları doldurun ve tıklatın
  1. Senin gibi bir Cypress testinde.
    cy.visit('http://localhost:3000/new-window') 
    
    // Do the actions you want to test in the new window 
    

    fullly çalışma test örneği

here bulunabilir.

+0

Hmmm. Roundabout yolu, ama sanırım çalışır. Bir soru. URL'yi düğme tıklatmasından nasıl alırım? Tıkladığım her seferde URL'nin değiştiğini varsayarak. –

+0

"be.called" yerine "be.calledWith" ifadesini kullanabilir ve url hakkında bilgi alabilirsiniz. Burada çalışma testlerinin tam bir örneğini oluşturdum: https://github.com/cypress-io/cypress-example-recipes/blob/master/examples/stubbing-spying__window/cypress/integration/window-stubbing.spec .js –

+0

Um, daha çok şu gibi durumlarda: Yeni pencerenin URL'sini bilmiyorum, nasıl dinamik olarak alabilirim? Varsa, 'href' özniteliğini alabilir miyim diye düşünüyorum? Yani böyle bir senaryo için '.getattribute' işlevi var mı? –

İlgili konular