测试过程中发生异常或断言失败时进行屏幕截图

1.获取当前的日期及时间,用于生成保存截图文件目录名

#!usr/bin/env python  
#-*- coding:utf-8 -*-

import time
from datetime import datetime
'''
本文件主要用于获取当前的日期以及时间
用于生成保存截图文件目录名
'''

def currentDate():
    date = time.localtime()
    #构造今天的日期字符串
    today = str(date.tm_year) + "-" + str(date.tm_mon) + "-" + str(date.tm_mday)
    return today
def currentTime():
    timeStr = datetime.now()
    #构造当前时间字符串
    now = timeStr.strftime('%H - %M - %S')
    return now

if __name__ == '__main__':
    print(currentDate())
    print(currentTime())

2.创建目录,用于存放异常截图

#!usr/bin/env python  
#-*- coding:utf-8 -*-  

from DateUtil import currentTime,currentDate
import os

'''
本文件主要用于创建目录,用于存放异常截图
创建目录的方法仅供大家参考,将来用于根据测试
需要创建测试人员需要的目录或文件等
'''

def createDir():
    #获取当前文件所在目录的绝对路径
    currentPath = os.path.dirname(os.path.abspath(__file__))
    #获取今天的日期字符串
    today = currentDate()
    #构造以今天日期命名的目录的绝对路径
    dateDir = os.path.join(currentPath,today)
    print(dateDir)
    if not os.path.exists(dateDir):
        #如果以今天日期命名的目录不存在则创建
        os.mkdir(dateDir)
    now = currentTime()
    #构造以当前时间命名的目录的绝对路径
    timeDir = os.path.join(dateDir,now)
    print(timeDir)
    if not os.path.exists(timeDir):
        os.mkdir(timeDir)
    return timeDir

3.存放异常截图的目录,并得到本次实例中存放图片目录的绝对路径

# !usr/bin/env python
# -*- coding:utf-8 -*-
#测试过程中发生异常或断言失败时进行屏幕截图

from selenium import webdriver
import unittest, time, os
from FileUtil import createDir
import traceback

# 创建存放异常截图的目录,并得到本次实例中存放图片目录的绝对路径,并且作为全局变量,以共本次所有测试用例调用
picDir = createDir()

def takeScreenshot(driver, savePath, picName):
    # 封装截屏方法
    # 构造屏幕截图路径及图片名
    picPath = os.path.join(savePath + '.png')
    try:
        # 调用WebDriver提供的get_screenshot_as_file()方法
        # 将截取的屏幕图片保存为本地文件
        driver.get_screenshot_as_file(picPath)
    except Exception as e:
        print(traceback.print_exc())

class TestFailCaptureScreen(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()

    def testSoGouSearch(self):
        url = 'http://www.sogou.com'
        self.driver.get(url)
        try:
            self.driver.find_element_by_id('query').send_keys('光荣之路自动化测试')
            self.driver.find_element_by_id('stb').click()
            time.sleep(3)
            self.assertTrue('事在人为' in self.driver.page_source,
                            "'事在人为'关键字串在页面源代码中未找到")
        except AssertionError as e:
            #调用封装好的截图方法,进行截图并保存在本地磁盘
            takeScreenshot(self.driver,picDir,e)
        except Exception as e:
            print(traceback.print_exc())
            takeScreenshot(self.driver,picDir,e)

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.mian()
原文地址:https://www.cnblogs.com/sleeping-cat/p/8278593.html