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

Selenium Python测试用例失败截图无法保存问题求助

问题分析与修复方案

核心问题汇总

  • 浏览器提前关闭:测试方法中先执行self.driver.close()再尝试截图,此时driver实例已失效,无法生成截图。
  • 方法名拼写错误:save_screenshots应为save_screenshot(多了一个s),会触发AttributeError导致截图逻辑无法执行。
  • 路径语法错误:字符串引号嵌套混乱,导致路径无效;跨平台路径分隔符使用不当。
  • 相对路径可靠性问题:若当前工作目录非项目根目录,相对路径无法定位到Screenshots文件夹。

修正后的代码

import time
import os
from pageObjects.loginPage import LoginPage
from utilities.readProperties import ReadConfig

# 定义项目根目录和截图文件夹路径,避免硬编码
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
SCREENSHOT_DIR = os.path.join(PROJECT_ROOT, "Screenshots")

# 确保截图文件夹存在,不存在则自动创建
os.makedirs(SCREENSHOT_DIR, exist_ok=True)

class Test_001_Login:
    baseURL = ReadConfig.getApplicationURL()
    username = ReadConfig.getUseremail()
    password = ReadConfig.getPassword()

    def test_homePageTitle(self, setup):
        self.driver = setup
        self.driver.get(self.baseURL)
        act_title = self.driver.title
        
        if act_title == "Your store. Login":
            self.driver.close()
            assert True
        else:
            time.sleep(5)
            # 使用os.path拼接跨平台有效路径
            screenshot_path = os.path.join(SCREENSHOT_DIR, "test_homePageTitle.png")
            self.driver.save_screenshot(screenshot_path)
            self.driver.close()
            assert False

    def test_login(self, setup):
        self.driver = setup
        self.driver.get(self.baseURL)
        time.sleep(10)
        self.lp = LoginPage(self.driver)
        self.lp.setUserName(self.username)
        self.lp.setPassword(self.password)
        self.lp.clickLogin()
        act_title = self.driver.title
        
        if act_title == "Dashboard / nopCommerce administration":
            self.driver.close()
            assert True
        else:
            time.sleep(5)
            screenshot_path = os.path.join(SCREENSHOT_DIR, "test_login.png")
            self.driver.save_screenshot(screenshot_path)
            self.driver.close()
            assert False

关键优化点

  1. 调整close()执行顺序:将浏览器关闭操作移到截图完成后,确保driver在截图时处于活跃状态。
  2. 修正方法名:将拼写错误的save_screenshots改为官方正确方法名save_screenshot。
  3. 使用os.path处理路径:通过os.path.join生成跨平台兼容的路径,自动适配Windows/macOS/Linux的路径分隔符;通过os.makedirs提前创建截图文件夹,避免因文件夹不存在导致的保存失败。
  4. 绝对路径定位:基于项目根目录生成截图文件夹的绝对路径,彻底解决相对路径的不确定性问题。

内容的提问来源于stack exchange,提问作者Ei Shwe Zin Thit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:30:44