Cypress: Timed out retrying: Expected to find element
Cypressで要素が見つからない場合のエラー
概要
CypressでDOM要素が見つからず、リトライしてもタイムアウトした場合に発生するエラーです。
エラーメッセージ
Timed out retrying after 4000ms: Expected to find element: `.submit-button`, but never found it.
原因
- セレクタの誤り: CSSセレクタが間違っている
- 要素が動的: 非同期でレンダリングされる
- 条件付きレンダリング: 特定条件でのみ表示
- iframeやShadow DOM: 通常のDOMツリー外
解決策
1. 正しいセレクタを使用
| |
2. 自動リトライの理解
| |
3. 存在確認
| |
4. ネットワークリクエストの待機
| |
5. 条件付きテスト
| |
6. iframeの操作
| |
7. Shadow DOMの操作
| |
8. カスタムコマンド
| |
9. デバッグ
| |
10. グローバル設定
| |
よくある間違い
- cy.get() の戻り値を変数に保存しようとする(Cypressはチェーン式)
- setTimeout や async/await を使用(Cypressの自動リトライが無効になる)
- .then() 内で cy.get() を使用(非推奨)
- 要素の表示前にクリックしようとする
この記事は役に立ちましたか?