You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将Selenium截图保存至虚拟环境同目录文件夹?

Selenium-Screenshot 路径错误修复与跨环境截图保存方案

错误根源

出现FileNotFoundError的核心原因有两个:

  • 使用.作为路径时,指向的是当前工作目录,而非Python脚本所在目录,导致实际保存路径与预期不符;
  • Selenium-Screenshot包不会自动创建不存在的目标文件夹,若指定路径未提前创建则直接报错。

针对性修复(虚拟环境内保存)

要将截图保存到与Python脚本同目录的.venv下的空文件夹,需先精准定位路径并确保文件夹存在:

  1. 获取脚本自身所在目录,避免工作目录干扰;
  2. 拼接.venv内的截图文件夹路径;
  3. 提前创建文件夹(若已存在则跳过)。

完整修复代码

import os
from Screenshot import Screenshot
from selenium import webdriver

# 获取脚本所在绝对目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接虚拟环境内的截图文件夹路径
venv_screenshot_dir = os.path.join(script_dir, ".venv", "screenshots")
# 创建文件夹(已存在则不报错)
os.makedirs(venv_screenshot_dir, exist_ok=True)

ob = Screenshot.Screenshot()
driver = webdriver.Chrome()
url = "https://www.google.com"
driver.get(url)
driver.maximize_window()

# 使用正确的保存路径
img_url = ob.full_screenshot(
    driver,
    save_path=venv_screenshot_dir,
    image_name="image.png",
    is_load_at_runtime=True,
    load_wait_time=3
)

driver.quit()

跨用户通用方案(适合打包分发)

若要做成可在其他用户电脑运行的包,不建议依赖.venv(部分用户可能不使用虚拟环境,或venv路径自定义),推荐两种更通用的方案:

方案1:脚本同目录创建截图文件夹

直接在脚本所在目录生成screenshots文件夹,无需依赖虚拟环境:

screenshot_dir = os.path.join(script_dir, "screenshots")
os.makedirs(screenshot_dir, exist_ok=True)

方案2:使用用户系统默认文档目录

利用系统默认的文档路径保存截图,避免权限问题且符合用户使用习惯:

# 获取用户文档目录(跨Windows/macOS/Linux)
user_doc_dir = os.path.expanduser("~/Documents")
screenshot_dir = os.path.join(user_doc_dir, "MyApp_Screenshots")
os.makedirs(screenshot_dir, exist_ok=True)

注意事项

  • 确保目标路径有写入权限(尤其是系统目录);
  • 若仍报错,可打印目标路径变量确认实际路径是否正确;
  • 打包分发时,需确保Selenium-Screenshot和ChromeDriver的依赖正确配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:12:41