WebDriver 錯誤

任何傳送到 WebDriver 的 命令 都可能收到錯誤 響應。錯誤由 HTTP 響應 表示,該響應包含 HTTP 狀態程式碼(在 4xx 或 5xx 範圍內),以及包含錯誤詳細資訊的 JSON 有效載荷。

有效載荷

**錯誤物件** 是一個 JSON 物件,它包含三個,有時四個欄位

error

錯誤型別。

message

對錯誤性質的人類可讀描述。

stacktrace

發生錯誤時活動堆疊幀的堆疊跟蹤報告。

data(可選)

任意且由實現定義的資料,可以用來向用戶展示這些資料。

許多驅動程式在遇到 意外開啟警報 錯誤時,會包含 使用者提示 的文字。

示例

例如,對 /session/1234/urlGET 請求(其中 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 內部伺服器錯誤 指示應該已正確執行的 命令 由於某種原因無法支援。

另請參閱