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

Posted sleeping_cat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试过程中发生异常或断言失败时进行屏幕截图相关的知识,希望对你有一定的参考价值。

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()

以上是关于测试过程中发生异常或断言失败时进行屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章

模板匹配屏幕截图在断言上失败

Selenium2+python自动化60-异常后截图(screenshot)

Selenium2+python自动化60-异常后截图(screenshot)

Selenium2+python自动化60-异常后截图(screenshot)转载

Selenium2+python自动化60-异常后截图(screenshot)转载

Selenium 可以截取 JUnit 测试失败的屏幕截图吗?