自动化测试常用脚本-截图

from BeautifulReport import BeautifulReport as BR
from selenium import webdriver

'''截图'''
def screenshot(self, img_name):
    """
    :param img_name: 图片的名字
    :return: 以列表形式返回图片的绝对路径和名字
    """
    # HTML_IMG_TEMPLATE 是保存图片的html模板,设置了图片的大小。其实就是将图片嵌入到html中
    HTML_IMG_TEMPLATE = """
            <a href="data:image/png;base64, {}">
            <img src="data:image/png;base64, {}" width="800px" height="500px"/>
            </a>
            <br></br>
        """
    img_path = self.save_img(img_name)  # 调用保存截图的方法
    data = BR.img2base(img_path[0], img_path[1] + '.png')  # img_path 是列表,保存了图片的路径和名称。img2base() 方法将图片转换为base64格式
    print(HTML_IMG_TEMPLATE.format(data, data))



'''保存截图'''
def save_img(self, img_name):
    """
    传入一个图片名称:img_name, 并存储到默认的文件路径下
    :param img_name: 图片的名字
    :return: 以列表形式返回图片的绝对路径和名字
    """
    path = os.path.dirname(os.path.dirname(__file__)) + "\img"  # 获取img目录的路径,项目提前建好 img 目录 
    self.driver.get_screenshot_as_file('{}{}.png'.format(os.path.abspath(path), img_name))  
    return [path, img_name]

"""
 以上两个函数定义完后,在实际操作中,若要在当系统报错时进行截图并嵌在html报告中,在对应的测试用例中加上截图装饰器即可
进入add_test_img()源码中,就有解释

def add_test_img(*pargs):
    """
        接受若干个图片元素, 并展示在测试报告中
    :param pargs:
    :return:
    """
"""

@BR.add_test_img()
def test_demo(self):
    pass