WebDriver 錯誤
任何傳送到 WebDriver 的 命令 都可能收到錯誤 響應。錯誤由 HTTP 響應 表示,該響應包含 HTTP 狀態程式碼(在 4xx 或 5xx 範圍內),以及包含錯誤詳細資訊的 JSON 有效載荷。
有效載荷
示例
例如,對 /session/1234/url 的 GET 請求(其中 1234 是一個偽造的會話)將返回一個帶有 404 Not Found 狀態的響應,以及以下主體
json
{
"value": {
"error": "invalid session id",
"message": "No active session with ID 1234",
"stacktrace": ""
}
}
驅動程式可以選擇使用其他錯誤資料來註釋錯誤。值得注意的是,當用戶提示(如 window.alert)在您之前的 WebDriver 命令請求執行後開啟一個模態對話方塊時,這很常見。
由於 WebDriver 和 JavaScript 執行都會被此類對話方塊阻止,因此我們在後續響應中看到 意外開啟警報 錯誤
json
{
"value": {
"error": "unexpected alert open",
"message": "",
"stacktrace": "",
"data": {
"text": "Message from window.alert"
}
}
}
在大多數 客戶端 中,錯誤將由某種錯誤型別或物件表示表示。在 Python 中,它表示為 WebDriverException,在 Node.js 中表示為 WebDriverError,在 Java 中也表示為 WebDriverException。
錯誤表
| 錯誤型別 | HTTP 狀態程式碼 | 描述 |
|---|---|---|
| 元素點選被攔截 | 400 錯誤請求 |
元素點選 命令 無法完成,因為接收事件的 元素 遮擋了請求點選的元素。 |
| 元素不可互動 | 400 錯誤請求 |
命令 無法完成,因為元素無法透過指標或鍵盤進行互動。 |
| 不安全的證書 | 400 錯誤請求 |
導航導致使用者代理遇到證書警告,這通常是由於 TLS 證書過期或無效造成的。 |
| 無效引數 | 400 錯誤請求 |
傳遞給 命令 的引數無效或格式錯誤。 |
| 無效的 Cookie 域 | 400 錯誤請求 |
嘗試在與當前頁面不同的域下設定 Cookie,這是非法的。 |
| 無效的元素狀態 | 400 錯誤請求 |
命令 無法完成,因為元素處於無效狀態,例如,嘗試 清除 不可編輯且不可重置的元素。 |
| 無效選擇器 | 400 錯誤請求 |
元素檢索命令提供了一個未知的選擇器策略。 |
| 無效的會話 ID | 404 未找到 |
給定的會話 ID 無法識別,這意味著會話不存在或未處於活動狀態。請注意,已刪除 的會話無法重新使用。 |
| JavaScript 錯誤 | 500 內部伺服器錯誤 |
在執行使用者提供的 JavaScript 時發生錯誤。 |
| 移動目標超出邊界 | 500 內部伺服器錯誤 |
滑鼠互動的目標不在瀏覽器的視窗中,也無法移入視窗中。 |
| 沒有此警報 | 404 未找到 |
嘗試對未開啟的使用者提示進行操作。 |
| 沒有此 Cookie | 404 未找到 |
在當前 文件 的 Cookie 中,沒有找到與給定路徑名稱匹配的 Cookie。 |
| 沒有此元素 | 404 未找到 |
使用給定的搜尋引數無法在頁面上找到元素。 |
| 沒有此框架 | 404 未找到 |
切換到框架的 命令 無法滿足,因為找不到該框架。 |
| 沒有此視窗 | 404 未找到 |
切換到視窗的 命令 無法滿足,因為找不到該視窗。 |
| 指令碼超時 | 408 請求超時 |
指令碼在超時時間到期前未完成。 |
| 未建立會話 | 500 內部伺服器錯誤 |
無法建立新會話,原因可能是無法啟動瀏覽器,或者提供的 功能 不匹配,無法啟動會話。 |
| 過時的元素引用 | 404 未找到 |
命令 失敗,因為引用的 元素 不再附加到 DOM。 |
| 超時 | 408 請求超時 |
操作在超時時間到期前未完成。 |
| 無法設定 Cookie | 500 內部伺服器錯誤 |
設定 Cookie 值的 命令 無法滿足。 |
| 無法捕獲螢幕 | 500 內部伺服器錯誤 |
無法進行螢幕截圖。 |
| 意外開啟警報 | 500 內部伺服器錯誤 |
模態對話方塊已開啟,阻止了此操作。 |
| 未知命令 | 404 未找到 |
無法執行 命令,因為驅動程式不知道該命令。 |
| 未知錯誤 | 500 內部伺服器錯誤 |
驅動程式在處理 命令 時發生未知錯誤。 |
| 未知方法 | 405 方法不允許 |
請求的 命令 與已知 URL 匹配,但與該 URL 的方法不匹配。 |
| 不支援的操作 | 500 內部伺服器錯誤 |
指示應該已正確執行的 命令 由於某種原因無法支援。 |