Browser Run 使用多个独立计时器来管理请求各部分允许花费的时间。如果任一计时器超过其限制,请求将返回超时错误。
每个计时器控制渲染生命周期的特定部分——从页面加载、到选择器加载、再到操作。
| 计时器 | 范围 | 默认值 | 最大值 |
|---|---|---|---|
goToOptions.timeout |
超时前等待页面加载的时间。 | 30 秒 | 60 秒 |
goToOptions.waitUntil |
确定页面加载何时完成。详情请参阅 waitUntil 选项。 |
domcontentloaded |
— |
waitForSelector |
等待页面上出现特定元素(任意 CSS 选择器)的时间。 | null | 60 秒 |
waitForTimeout |
页面加载完成后、继续执行操作前额外等待的时间。 | null | 60 秒 |
actionTimeout |
页面加载后等待操作本身(例如:屏幕截图、PDF 或抓取)完成的时间。 | null | 5 分钟 |
PDFOptions.timeout |
与 actionTimeout 相同,但仅适用于 /pdf 端点。 |
30 秒 | 5 分钟 |
goToOptions.waitUntil 参数控制浏览器何时认为页面导航完成。这对于 JavaScript 密集型页面很重要,因为内容会在初始页面加载后动态渲染。
| 值 | 行为 |
|---|---|
load |
等待 load 事件,包括所有资源如图片和样式表 |
domcontentloaded |
等待 DOM 内容完全加载,在 load 事件之前触发(默认) |
networkidle0 |
等待至少 500 毫秒内没有网络连接 |
networkidle2 |
等待至少 500 毫秒内不超过两个网络连接 |
对于依赖 JavaScript 渲染内容的页面,使用 networkidle0 或 networkidle2 以确保页面在提取前完全渲染。
你可以设置多个计时器——只要其中一个完成,请求就会执行。
如果未获得预期输出:
- 尝试增大
goToOptions.timeout(最高 60 秒)。 - 如果等待特定元素,使用
waitForSelector。否则,将goToOptions.waitUntil设置为networkidle2,确保页面已完成动态内容加载。 - 如果收到
422,可能是操作本身(例如:截取屏幕截图、提取 HTML 内容)耗时较长。尝试增大actionTimeout。