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

如何在Python Selenium测试中将截图保存至指定目录或文件夹

如何在Python Selenium中将断言失败的截图保存到指定目录

嘿,这个需求在UI自动化测试里太常见了!你现在的代码已经能在断言失败时触发截图,但默认是存在脚本运行的当前目录里。要改成指定文件夹,只需要做几个小调整,我一步步给你说:

  • 第一步:确保目标目录存在
    如果指定的文件夹还没创建,Selenium的截图方法会直接报错。所以我们可以用Python的os模块来检查并自动创建目录(如果不存在的话)。

  • 第二步:拼接完整的截图路径
    别直接写文件名,而是把指定目录路径和带时间戳的文件名用os.path.join()拼接起来——这个方法能自动处理Windows和Linux/macOS的路径分隔符差异,避免跨平台运行时出错。

下面是修改后的完整代码,我还修正了Python3里print语句需要括号的小问题:

import os
from datetime import datetime
# 假设你已经初始化了driver和log_test_case函数

# 指定你要保存截图的目录,可以是相对路径或绝对路径
SCREENSHOT_DIR = "./test_screenshots"

# 检查目录是否存在,不存在则创建(支持多级目录)
if not os.path.exists(SCREENSHOT_DIR):
    os.makedirs(SCREENSHOT_DIR)

try: 
    assert driver.find_element_by_xpath("//div[text()='Please enter unique details']")
except AssertionError: 
    print("We found some issues -- Provide some unique details")
    log_test_case("Link Generate Failed", "Fail")
    c_date = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    # 拼接完整的截图路径
    screenshot_path = os.path.join(SCREENSHOT_DIR, f'Link_Generate_Failed-{c_date}.png')
    driver.get_screenshot_as_file(screenshot_path)
    print(f"截图已成功保存到:{screenshot_path}")  # 可选:打印路径方便快速定位

额外补充几个小细节:

  • 如果你想指定绝对路径,比如C:/automation_screenshots或者/home/user/test_screenshots,直接把SCREENSHOT_DIR改成对应的路径即可。
  • os.makedirs()会自动创建所有不存在的上级目录,比如你指定./reports/screenshots,即使reports文件夹不存在,它也会一起创建,不用手动提前建目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:24:52