如何在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
相关产品推荐
相关产品推荐

