当我们做自动化时,如果每做一步都去截图或者每次关键步骤都去截图,这样很麻烦,而且我们的截图语句也霸占了我们的代码的50%,怎么处理才能做到只有失败才截图呢?又怎么让截图与我们的自动化结合呢看代码实例:
# coding:utf-8
fromseleniumimportwebdriver
classScreen(object):
'''截图功能的装饰器'''
def__init__(self, driver):
self.driver = driver
def__call__(self, f):
definner(*args):
try:
returnf(*args)
except:
importtime
nowTime = time.strftime("%Y_%m_%d_%H_%M_%S")
self.driver.get_screenshot_as_file('%s.jpg'% nowTime)
raise
returninner
#以下是装饰器与unittest结合的案例
importunittest
classTest(unittest.TestCase):
driver = webdriver.Firefox()#全局参数driver
defsetUp(self):
self.driver.get("https://www.baidu.com")
@Screen(driver)
deftest01(self):
u'''这个是失败的案例'''
self.driver.find_element_by_id("11kw").send_keys("python")
self.driver.find_element_by_id("su").click()
@Screen(driver)
deftest_02(self):
u'''这个是通过的案例'''
self.driver.find_element_by_id("kw").send_keys("yoyo")
self.driver.find_element_by_id("su").click()
deftearDown(self):
self.driver.quit()
if__name__ =="__main__":
unittest.main()
由于本文涉及到装饰器,可以自行百度“python装饰器”
领取专属 10元无门槛券
私享最新 技术干货