36

Web サイトにログインするための Cypress テストを作成しています。フィールドとボタンがありusernameます。ほとんどの場合、ログインは簡単ですが、最初に警告ダイアログが表示され、それを閉じる必要がある場合があります。passwordSubmit

私はこれを試しました:

cy.get('#login-username').type('username');
cy.get('#login-password').type(`password{enter}`);

// Check for a possible warning dialog and dismiss it
if (cy.get('.warning')) {
  cy.get('#warn-dialog-submit').click();
}

警告が表示されない場合にテストが失敗することを除いて、これは正常に機能します。

CypressError: Timed out retrying: Expected to find element: '.warning', but never found it.

次に、これを試しましたが、警告が十分に速く表示されないため失敗し、Cypress.$何も見つかりません。

cy.get('#login-username').type('username');
cy.get('#login-password').type(`password{enter}`);

// Check for a possible warning dialog and dismiss it
if (Cypress.$('.warning').length > 0) {
  cy.get('#warn-dialog-submit').click();
}

要素の存在を確認する正しい方法は何ですか? cy.get()要素が見つからない場合でも文句を言わないようなものが必要です。

4

6 に答える 6

6

DOM 要素で条件付きテストを実行しようとすることにはさまざまな欠点があり、Cypress にはさまざまな回避策があります。これらはすべて条件付きテストのサイプレスのドキュメントで詳細に説明されています。

やろうとしていることを実行するには複数の方法があるため、ドキュメント全体を読んで、アプリケーションとテストのニーズに最適な方法を決定することをお勧めします。

于 2017-12-13T14:51:45.997 に答える