WebDriver 错误

发送给 WebDriver 的任何 命令 都可能收到错误 响应。错误由具有 4xx 或 5xx 范围内的 HTTP 状态码 和包含错误详细信息的 JSON 负载的 HTTP 响应 表示。

负载

错误对象 是一个 JSON 对象,包含三个,有时是四个字段

error

错误类型。

message

错误的性质的人类可读描述。

堆栈跟踪

发生错误时活动堆栈帧的堆栈跟踪报告。

data(可选)

任意的、由实现定义的、对用户可能有用的数据。

许多驱动程序在遇到 意外的 alert 打开 错误时会包含 用户提示 的文本。

示例

例如,对 /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 执行都会被此类对话框暂停,因此我们在后续响应中会看到一个 意外的 alert 打开 错误。

json
{
  "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 尝试在与当前页面不同的域下设置 cookie,这是非法的。
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 在当前 文档Cookie 中未找到与给定路径名称匹配的 Cookie。
no such element 404 Not Found 使用给定的搜索参数无法在页面上找到元素。
no such frame 404 Not Found 切换到 frame 的 命令 未能满足,因为找不到该 frame。
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,命令 失败。
超时 408 Request Timeout 操作未在超时到期前完成。
unable to set cookie 500 Internal Server Error 设置 cookie 值的 命令 未能满足。
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 表示某个本应正常执行的 命令 由于某种原因无法支持。

另见