Python中如何将Selenium截图保存至虚拟环境同目录文件夹?
Selenium-Screenshot 路径错误修复与跨环境截图保存方案
错误根源
出现FileNotFoundError的核心原因有两个:
- 使用
.作为路径时,指向的是当前工作目录,而非Python脚本所在目录,导致实际保存路径与预期不符; - Selenium-Screenshot包不会自动创建不存在的目标文件夹,若指定路径未提前创建则直接报错。
针对性修复(虚拟环境内保存)
要将截图保存到与Python脚本同目录的.venv下的空文件夹,需先精准定位路径并确保文件夹存在:
- 获取脚本自身所在目录,避免工作目录干扰;
- 拼接
.venv内的截图文件夹路径; - 提前创建文件夹(若已存在则跳过)。
完整修复代码
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
相关产品推荐
相关产品推荐

