Selenium2+python自动化66-装饰器之运行失败截图
Posted jason89
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium2+python自动化66-装饰器之运行失败截图相关的知识,希望对你有一定的参考价值。
前言
对于用例失败截图,很多小伙伴都希望在用例执行失败的时候能自动截图,想法是很好的,实现起来并不是那么容易。
这里分享下我的一些思路,当然目前还没找到完美的解决方案,我的思路是用装饰器去解决,希望有高手已经实现的可以指点下。
一、函数作为形参
1.函数的参数也可以是另外一个函数,也就是说传的参数不仅可以是常见的字符串、数字等,也可以是一个函数
2.定义aaa为一个加法函数,bbb为减法函数
3.calculate这个函数传三个参数,第一个参数是一个函数,另外两个参数是函数的两个参数
二、万能装饰器
1.由于不知道我们被调用的函数到底有几个参数,这时候就可以写一个万能的装饰器,传可变参数
2.这个装饰器实现一个简单功能:运行一个函数,运行不抛异常,就打印pass;运行函数抛异常就打印fail
三、实现百度搜索功能
# coding:utf-8 from selenium import webdriver driver = webdriver.Firefox() # 截图功能 def get_screen(): ‘‘‘截图‘‘‘ import time nowTime = time.strftime("%Y_%m_%d_%H_%M_%S") driver.get_screenshot_as_file(‘%s.jpg‘ % nowTime) # 自动截图装饰器 def screen(func): ‘‘‘截图装饰器‘‘‘ def inner(*args, **kwargs): try: f = func(*args, **kwargs) return f except: get_screen() # 失败后截图 return inner @screen def search(driver): driver.get("https://www.baidu.com") driver.find_element_by_id("kw11").send_keys("python") # 此行运行失败的 driver.find_element_by_id("su").click() search(driver) # 执行search
这个只是我实现的一个简单的功能,至于如何运用到测试用例中与unittest结合起来,实现的最大难点在于driver参数的处理,因为截图需要用到driver参数。
以上是关于Selenium2+python自动化66-装饰器之运行失败截图的主要内容,如果未能解决你的问题,请参考以下文章
Selenium2+python自动化55-unittest之装饰器(@classmethod)转载
Selenium2+python自动化55-unittest之装饰器(@classmethod)转载
Selenium2+python自动化67-用例失败自动截图
Selenium2+python自动化67-用例失败自动截图转载