You need to enable JavaScript to run this app. 如何在Heroku上使用Selenium WebDriver截图及查询截图保存位置
优惠活动
大模型
产品
解决方案
定价
更多

如何在Heroku上使用Selenium WebDriver截图及查询截图保存位置

Heroku环境Selenium超时问题排查及截图操作指南

截图文件存储位置说明

Heroku的dyno采用临时文件系统,通过Selenium的截图接口生成的文件,存储规则和本地运行逻辑一致:

  • 如果调用save_screenshot时传入的是相对路径,文件默认保存在Python脚本执行的当前工作目录(即dyno的/app目录下)
  • 如果传入的是绝对路径,文件会保存在你指定的路径下
    注意:所有临时存储的文件会在dyno重启、重新部署或闲置回收后被彻底清除,无法长期保留

查看截图的可行方法

  • 日志输出base64方案(推荐)
    直接将截图转为base64字符串打印到Heroku运行日志,无需额外存储配置,示例代码如下:
import base64
from selenium import webdriver

# 此处为你的driver初始化代码
screenshot_base64 = driver.get_screenshot_as_base64()
print("RUNTIME_SCREENSHOT:", screenshot_base64)

后续在本地执行heroku logs --app 你的应用名称即可拉取到日志中的base64编码内容,通过任意base64转图片工具即可还原截图。

  • 对接对象存储持久化方案
    如果需要长期保存截图,可在代码中调用阿里云OSS、腾讯云COS、亚马逊S3等对象存储服务的SDK,将截图文件直接上传到外部存储,通过存储服务生成的公网链接即可随时查看截图。
  • 临时访问dyno本地文件
    如果仅需要临时查看运行时截图,可通过heroku run bash --app 你的应用名称指令进入dyno的命令行,或使用Heroku后台的在线终端进入对应目录查看,注意该方式打开的是全新dyno,和你正在运行应用的dyno相互独立,需要在代码中增加截图后的同步逻辑才能获取到运行时生成的文件

超时问题排查补充建议

本地运行正常但Heroku上报TimeoutException,绝大多数是Chrome启动配置缺失导致,可优先检查以下配置项:

Heroku环境运行无头Chrome必须添加专用启动参数,否则会出现启动失败、页面加载超时等问题,参考初始化代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 无头模式配置
chrome_options.add_argument("--headless=new")
# 禁用沙箱模式,Heroku环境必须配置
chrome_options.add_argument("--no-sandbox")
# 禁用共享内存,避免小内存dyno出现资源不足报错
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")
# 配置页面加载超时时间,可根据需求调整
driver = webdriver.Chrome(options=chrome_options)
driver.set_page_load_timeout(30)

同时确认你已经在Heroku应用的buildpack配置中,添加了Google Chrome和ChromeDriver对应的官方构建包,缺少这两个依赖会直接导致Chrome无法启动触发超时。


内容的提问来源于stack exchange,提问作者Kai021195

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 12:06:05