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 内部服务器错误 |
指示应该已正确执行的 命令 由于某种原因无法支持。 |