2017-12-11 111 views
9

Câu hỏi đơn giản như vậy. Trong Cypress, làm thế nào tôi có thể truy cập một cửa sổ mới mở ra khi chạy thử nghiệm.Truy cập cửa sổ mới - cypress.io

bước để tái tạo:

  1. Chạy thử nghiệm. Sau khi một số hành động, cửa sổ mới bật lên (url là động trong tự nhiên).
  2. Điền vào các trường trong cửa sổ mới và nhấp vào một vài nút.
  3. Sau khi các thao tác được yêu cầu hoàn tất trong Cửa sổ mới, hãy đóng cửa sổ mới và quay lại cửa sổ chính.
  4. Tiếp tục thực hiện với cửa sổ chính.

Điểm quan tâm: nên tập trung

main window -> new window -> main window 

Tôi đã đọc vài điều có liên quan đến việc sử dụng iframeconfirmation box, nhưng ở đây không có nó trong những người. Liên quan đến việc truy cập một cửa sổ hoàn toàn mới. Một cái gì đó như Window Handlers trong Selenium. Thật không may không thể tìm thấy bất cứ điều gì liên quan đến nó.

Trả lời

8

Không thể truy cập cửa sổ mới qua Cypress trong phiên bản hiện tại.

Tuy nhiên, có nhiều cách chức năng này có thể được kiểm tra trong Cypress ngay bây giờ. Bạn có thể chia các bài kiểm tra của mình thành các phần riêng biệt và vẫn tin rằng ứng dụng của bạn được bảo hiểm.

  1. Viết một thử nghiệm để kiểm tra xem khi thực hiện các hành động trong ứng dụng của bạn, sự kiện window.open được gọi bằng cách sử dụng cy.spy() để lắng nghe một sự kiện window.open.
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') 
  1. Trong một thử nghiệm mới, sử dụng cy.visit() đi đến url mà có thể đã mở trong cửa sổ mới, điền vào các trường và nhấp vào các nút như bạn sẽ làm trong bài kiểm tra Cypress.
cy.visit('http://localhost:3000/new-window') 

// Do the actions you want to test in the new window 

dụ kiểm tra Fullly làm việc có thể được tìm thấy here.

+0

Hmmm. Đường vòng, nhưng tôi đoán. Một câu hỏi. Làm thế nào để tôi lấy URL từ nút bấm. Giả sử rằng url thay đổi mỗi khi tôi nhấp vào nó. –

+0

Thay vì 'be.called', bạn có thể sử dụng xác nhận' be.calledWith' và xác nhận url. Tôi đã tạo một ví dụ đầy đủ về các bài kiểm tra làm việc tại đây: https://github.com/cypress-io/cypress-example-recipes/blob/master/examples/stubbing-spying__window/cypress/integration/window-stubbing.spec .js –

+0

Um, giống như trong các trường hợp: Tôi không biết url của cửa sổ mới, làm cách nào tôi có thể nhận được địa chỉ động đó? Tôi nghĩ có thể có thuộc tính 'href' nếu nó có sẵn? Vì vậy, có một '.getattribute' chức năng cho kịch bản như vậy? –

Các vấn đề liên quan