web-dev-qa-db-ja.com

ヒノキで要素が消えるのを待つ方法

アサーションを実行する前に消えるのを待つ必要がある読み込みインジケータがあります。

私はいくつかが以下を使用しているのを見ましたが、それは私にとってはうまくいかないようであり、またそれを主張にしたくありません。 cy.get('element, {timeout: 10000}).should('not.exist);

ヒントを持っている人はいますか?

12
jaikl

特に待機する必要がある場合は、サイプレスの wait() 関数を使用してアサーションを作成し、タイムアウトするまでの待機時間を指定できます。

しかし、これはドキュメントで見つけることができるアンチパターンです:

任意の時間待機する必要はほとんどありません。これをサイプレスで表現するためのより良い方法は常にあります。

つまり、読み込みインジケーターがネットワーク要求にバインドされている場合は、それらが完了するのを待ってからアサーションを作成できます。これは this の例で実現できます:

_// Wait for the route aliased as 'getAccount' to respond
// without changing or stubbing its response
cy.server()
cy.route('/accounts/*').as('getAccount')
cy.visit('/accounts/123')
cy.wait('@getAccount').then((xhr) => {
  // we can now access the low level xhr
  // that contains the request body,
  // response body, status, etc
})
_

リクエスト待機の詳細については、 ここ を参照してください。

また、.should('not.exist')ではなく.should('not.be.visible')を本当に使用することを確認してください。

2
Diogo Rocha

多くの場合、スピナー実装をロードすると、DOMから要素が削除されるのではなく、単に要素が非表示になります。したがって、should("not.exist")は機能しません。

cy.get("element").should("not.be.visible")は、このような場合に適切なアプローチです( Diogoの回答 はすでに示唆されています)。

0
Philzen