zoukankan      html  css  js  c++  java
  • python 封装selenium 出错后,以时间生成文件夹保存错误图片

    背景:在selenium出错后都会截图,那截图的时候都是以当天时间存入到当前时间文件夹中,那这个就可以分成3部,进行封装

    一:格式化数据

    #encoding=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 currentHouse():
        timeStr = datetime.now()
        # 构造当前时间字符串
        now = timeStr.strftime('%H')
        return now
    
    def currentTime():
         timeStr = datetime.now()
         # 构造当前时间字符串
         now = timeStr.strftime('%H-%M-%S')
         return now
    
    
    
    
    if __name__ == "__main__":
        print (currentDate())
        print (currentTime())
        print(currentHouse())
    

      

    二:使用日期和时间生成文件

    from senior.filescreent.DateUtil import currentDate, currentTime
    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
    
    if  __name__=='__main__':
        createDir()
    

      会在项目中生成目录文件,以年月日为第一层目录,在以小时为第二层目录

     三、 selenium的错误后开始截图

    #encoding=utf-8
    from selenium import webdriver
    import unittest, time, os,sys
    from senior.filescreent.FileUtil import createDir
    import traceback
    from senior.filescreent.DateUtil import currentTime
    # 创建存放异常截图的目录,并得到本次实例中存放图片目录的绝对路径,
    # 并且作为全局变量,以供本次所有测试用例调用
    picDir = createDir()
    
    def takeScreenshot(driver, savePath, picName):
        # 封装截屏方法
        # 构造屏幕截图路径及图片名
      
        picPath = os.path.join(savePath, picName+".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.Chrome(executable_path="D:\driver\chromedriver")
    
        def testSearch(self):
            url = "http://www.baidu.com"
            # 访问首页
            self.driver.get(url)
            time.sleep(3)
    
            try:
                self.driver.find_element_by_id("kw").
                    send_keys(u"selenium测试")
                self.driver.find_element_by_id("su").click()
                time.sleep(3)
                # 断言页面的代码中是否存在“事在人为”这4个关键字,
                # 因为页面中没有这4个字,所以会触发except语句的执行,并触发截图操作
                self.assertTrue(u"事在人为1" in self.driver.page_source, 
                                "“事在人为”关键字串在页面源代码中未找到")
            except AssertionError as e:
                print (traceback.print_exc())
                # 调用封装好的截图方法,进行截图并保存在本地磁盘
                # sys._getframe().f_code.co_name  获取当前运行的方法
    
                takeScreenshot(self.driver, picDir, currentTime()+sys._getframe().f_code.co_name)
            except Exception as e:
                print (traceback.print_exc())
                takeScreenshot(self.driver, picDir, currentTime()+sys._getframe().f_code.co_name)
    
        def tearDown(self):
            # 退出浏览器
            self.driver.quit()
    
    if __name__ == '__main__':
        unittest.main()
    

       

    以时分秒+运行方法名生成了图片内容

  • 相关阅读:
    C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....
    FlexPaper在线文档分享(转载)
    winform中屏蔽对标题栏的操作
    【转】海量数据查询优化
    [转帖]用Reflector和FileDisassembler配合反编译.net Windows程序
    关于中缀表达式和逆波兰表达式(终结篇)
    jQuery教程基础篇之强大的选择器(层次选择器)
    模版方法(Template Method)
    VS2008新建项目时出现“此安装不支持该项目类型”
    并行计算相关文章
  • 原文地址:https://www.cnblogs.com/chongyou/p/12639071.html
Copyright © 2011-2022 走看看