You need to enable JavaScript to run this app. Selenium如何不本地保存截图直接上传至远端?(Python实现)
优惠活动
大模型
产品
解决方案
定价
更多

Selenium如何不本地保存截图直接上传至远端?(Python实现)

实现思路

核心是调用Selenium内置的get_screenshot_as_png()方法直接获取截图的二进制字节流,不需要写入本地磁盘,再把字节流作为文件参数传递给上传请求即可省略本地存储环节。

前置依赖
  • 需要提前安装对应库:pip install selenium requests
  • 提前配置好Selenium对应的浏览器驱动(如ChromeDriver),保证可以正常启动浏览器
完整代码示例
from selenium import webdriver
import requests

# 初始化浏览器,也可以用无头模式降低资源占用
options = webdriver.ChromeOptions()
# 如需无头模式可以打开下面的注释
# options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)

# 打开目标页面
driver.get("https://www.example.com")

# 直接获取截图二进制字节流,全程不写入本地磁盘
screenshot_bytes = driver.get_screenshot_as_png()
driver.quit()

# 上传到指定API/图床
upload_url = "替换为你自己的上传接口地址"
# 构造文件上传参数,字段名需要和接口要求的文件字段完全匹配
files = {
    # 三个参数分别对应:接口文件字段名、自定义文件名、截图MIME类型
    "image": ("screenshot.png", screenshot_bytes, "image/png")
}
# 如果接口需要鉴权或者其他头参数,在这里补充
headers = {
    "Authorization": "Bearer 替换为你的鉴权信息"
}
# 如果接口需要额外的表单参数,在这里补充
data = {
    "album_id": "12345"
}

response = requests.post(upload_url, files=files, headers=headers, data=data)

# 打印上传结果
print(f"上传状态码:{response.status_code}")
print(f"接口返回内容:{response.json()}")
注意事项
  • 如果你的上传接口接受base64格式的截图,可以把get_screenshot_as_png()替换为get_screenshot_as_base64(),直接传递base64字符串即可
  • 部分图床接口的文件字段名可能为file而不是image,需要根据你对接的接口文档调整files字典的键名
  • 如果是截取元素级别的截图,可以调用对应WebElement对象的screenshot_as_png属性获取对应元素的截图字节流,用法和全页截图一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:36:00