web-dev-qa-db-ja.com

新しいウィンドウにアクセス-cypress.io

質問はそれと同じくらい簡単です。サイプレスでは、テストの実行時に開く新しいウィンドウにどのようにアクセスできますか。

再作成する手順:

  1. テストを実行します。何らかのアクションの後、新しいウィンドウがポップアップします(URLは本質的に動的です)。
  2. 新しいウィンドウのフィールドに入力し、いくつかのボタンをクリックします。
  3. 新しいウィンドウで必要なアクションが完了したら、新しいウィンドウを閉じてメインウィンドウに戻ります。
  4. メインウィンドウで実行を続けます。

関心のあるポイント:焦点は

main window -> new window -> main window

私はiframeconfirmation boxの使用に関連するいくつかのことを読みましたが、ここではそれらのどれもありません。まったく新しいウィンドウへのアクセスに関連します。 Seleniumの Window Handlers のようなもの。残念ながら、それに関連するものは見つかりませんでした。

22
Kaushik NP

現在のバージョンでは、サイプレス経由で新しいウィンドウにアクセスすることはできません。

ただし、現在サイプレスでこの機能をテストする方法はたくさんあります。テストを別々の部分に分割しても、アプリケーションがカバーされていることを確信できます。

  1. アプリでアクションを実行するときに、__ cy.spy() を使用して_window.open_イベントをリッスンして、_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. 新しいテストでは、 cy.visit() を使用して、新しいウィンドウで開くURLに移動し、フィールドに入力して、サイプレステストの場合と同じようにボタンをクリックします。
_cy.visit('http://localhost:3000/new-window')

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

完全に動作するテスト例は here にあります。

30