码迷,mamicode.com
首页 > 编程语言 > 详细

Selenium2+python自动化66-装饰器之运行失败截图

时间:2018-05-12 16:17:24      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:美的   ima   sele   sel   class   *args   color   运用   return   

前言

对于用例失败截图,很多小伙伴都希望在用例执行失败的时候能自动截图,想法是很好的,实现起来并不是那么容易。

这里分享下我的一些思路,当然目前还没找到完美的解决方案,我的思路是用装饰器去解决,希望有高手已经实现的可以指点下。

 

一、函数作为形参

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-装饰器之运行失败截图

标签:美的   ima   sele   sel   class   *args   color   运用   return   

原文地址:https://www.cnblogs.com/jason89/p/9028874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!