WebDriver のエラー
WebDriver のコマンドは、送信された際にエラーレスポンスを受け取る可能性があります。このエラーは、4xx または 5xx の範囲の HTTP ステータスコード を含む HTTP レスポンス と、エラーの詳細を保持する JSON の本体によって表されます。
本体
エラーオブジェクトは JSON のオブジェクトで、3 つまたは4 つのフィールドを持ちます。
error-
エラー型です。
message-
このエラーについての人間が読むための説明です。
stacktrace-
エラーが発生した時点での、有効なスタックフレームのスタックトレースレポートです。
data(オプション)-
実装によって定義される任意のデータであり、ユーザーに提示すると有用な場合があります。
多くのドライバーでは、予期しないアラートが開いたエラーが発生した場合、ユーザープロンプトのテキストが含まれます。
例
例えば、/session/1234/url への GET リクエスト(ここで 1234 は存在しないセッションです)に対しては、404 Not Found のステータスコードと、以下の本文を含むレスポンスが返されます。
{
"value": {
"error": "invalid session id",
"message": "No active session with ID 1234",
"stacktrace": ""
}
}
ドライバーがエラーに追加のエラーデータを付記することは任意です。特に、 window.alert などのユーザープロンプトが、前回の WebDriver コマンドリクエストの実行後にモーダルダイアログを開いた場合に、この現象がよく見られます。
このようなダイアログにより WebDriver と JavaScript の実行が停止されるため、その後のレスポンスで予期しないアラートが開かれたというエラーが発生します。
{
"value": {
"error": "unexpected alert open",
"message": "",
"stacktrace": "",
"data": {
"text": "Message from window.alert"
}
}
}
ほとんどのクライアントでは、エラーはエラー型またはオブジェクト表現によって表されます。Python では WebDriverException として、Node.js では WebDriverError、Java ではWebDriverExceptionとして表現されます。
エラー一覧表
| エラー型 | HTTP ステータスコード | 説明 |
|---|---|---|
| element click intercepted | 400 Bad Request |
Element Click コマンド が、イベントを受信する要素がクリックを要求された要素を隠しているため、完了できませんでした。 |
| element not interactable | 400 Bad Request |
要素がポインター操作またはキーボード操作に対応していないため、コマンドを完了できませんでした。 |
| insecure certificate | 400 Bad Request |
ナビゲーションにより、ユーザーエージェントの証明書の警告が表示されました。これは通常、有効期限が切れているか、無効な TLS 証明書が原因で発生します。 |
| invalid argument | 400 Bad Request |
コマンドに渡された引数が無効であるか、誤った形式です。 |
| invalid cookie domain | 400 Bad Request |
現在のページとは異なるドメインでクッキーを設定しようとする不正な試みがなされました。 |
| invalid element state | 400 Bad Request |
要素が無効な状態であるため、コマンドを完了できませんでした。例えば、編集可能かつリセット可能な要素ではない場合に、その要素をクリアーしようとした場合などが該当します。 |
| invalid selector | 400 Bad Request |
要素取得コマンドが未知のセレクター戦略を提供しました。 |
| invalid session id | 404 Not Found |
指定されたセッション ID が認識されません。これは、該当するセッションが存在しないか、またはアクティブでないことを意味します。なお、削除されたセッションは再利用できません。 |
| JavaScript error | 500 Internal Server Error |
ユーザーから提供された JavaScript の実行中にエラーが発生しました。 |
| move target out of bounds | 500 Internal Server Error |
マウスの操作対象がブラウザーの表示領域内に存在せず、表示領域内に移動することもできません。 |
| no such alert | 404 Not Found |
ユーザープロンプトが開かれていない状態で操作を試みました。 |
| no such cookie | 404 Not Found |
現在の文書内のクッキーにおいて、指定されたパス名に一致するクッキーが見つかりませんでした。 |
| no such element | 404 Not Found |
指定された検索条件では、ページ上に該当する要素が見つかりませんでした。 |
| no such frame | 404 Not Found |
フレームを切り替えるためのコマンドが、該当するフレームが見つからなかったため、実行できませんでした。 |
| no such window | 404 Not Found |
ウィンドウを切り替えるためのコマンドが、該当するウィンドウが見つからなかったため、実行できませんでした。 |
| script timeout | 408 Request Timeout |
スクリプトが、タイムアウトする前に完了しませんでした。 |
| session not created | 500 Internal Server Error |
新しいセッションを作成できませんでした。これは、ブラウザーが起動できなかったか、セッションを開始するために提供された能力が一致しなかったためです。 |
| stale element reference | 404 Not Found |
参照されている要素が DOM に接続されなくなったため、コマンドの実行に失敗しました。 |
| timeout | 408 Request Timeout |
操作がタイムアウト期限前に完了しませんでした。 |
| unable to set cookie | 500 Internal Server Error |
クッキーの値を設定するコマンドが実行できませんでした。 |
| unable to capture screen | 500 Internal Server Error |
スクリーンキャプチャができなくなりました。 |
| unexpected alert open | 500 Internal Server Error |
この操作をブロックするモーダルダイアログが開かれました。 |
| unknown command | 404 Not Found |
コマンドが、ドライバーが認識していないため実行できませんでした。 |
| unknown error | 500 Internal Server Error |
ドライバーがコマンドを処理中に、予期せぬエラーが発生しました。 |
| unknown method | 405 Method Not Allowed |
リクエストされたコマンドは既知の URL と一致しましたが、その URL に対するメソッドとは一致しませんでした。 |
| unsupported operation | 500 Internal Server Error |
何らかの理由により、正常に実行されるべきであったコマンドに対応できないことを示します。 |