admin 管理员组

文章数量: 1184232

webdriver中的截图截图方法

在webdriver中截图有两种,第一种:全屏截图,第二种:区域截图

1、全屏截图,这个非常简单,只需要截取图像、保存图像即可,其中用到了get_screenshot_as_file()方法,这个方法能够直接截取整个web界面,最后返回的是文件的路径,这个是我进行图片比对的时候用的,可以根据自己需求进行修改

deffull_printscreen(driver, path):"""
    全屏截图,截取整个当前web界面,保存到指定路径
    :param driver:
    :param path: 图片保存路径,末尾要加'/'
    :return: 返回文件路径+名称
    """
    current_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))# 格式化时间
    tim = path + current_time +".png"# 组合路径与名称
    driver.get_screenshot_as_file(tim)# 截图return tim

2、区域截图,思路是,选截取整个web界面,然后根据坐标及宽高截取自己想要的区域,这个方法需要先全屏截图,然后读取这个图像,进行区域分割,得出自己需要的区域

from PIL import Image	# 读取图片所需要的模块import os
import shutil   
defsetup_module():#判断是否存在文件夹,存在删除重建,不存在建立(由于区域截图最后会删除 临时截图 这个目录,这里可以改一下,只保留os.mkdir(r'.\临时截图')即可,因为我需要用到这些内容,所有这里我就不手动修改了)"""
    判断当前文件夹是否存在 临时截图 这个文件夹,存在删除重建,不存在建立
    :return:
    """if os.path.isdir(r'.\临时截图'):
        shutil.rmtree(r'.\临时截图', ignore_errors=True)# 递归的删除目录下的文件和目录
        os.mkdir(r'.\临时截图')else:
        os.mkdir(r'.\临时截图')defremove_file():"""
    删除当前文件夹中的 临时截图 这个文件夹
    :return:
    """
    shutil.rmtree(r'.\临时截图', ignore_errors=True)# 递归的删除目录下的文件和目录defarea_printscreen(driver,ele,path,patient_id=''):"""
    区域截图,截图目标元素的区域,保存到指定路径,可以输入一个id(patinet_id)【id是我自己截图是用到的,如果不需要可以去掉】
    :param driver:要进行截图的页面
    :param ele: 要截取的目标元素
    :param path: 存放的路径
    :param patient_id: 当前数据的id,默认为''
    :return:返回文件路径+名称
    """
    setup_module()# 判断是否有 临时截图 这个目录,没有新建一个,有就删除重新建# 截取全屏
    driver.save_screenshot(r"临时截图\\full.png")# 要截屏的目标元素
    element = ele
    # print(element.location)# print(element.size)# 获取element的顶点坐标
    xPiont = element.location['x']
    yPiont = element.location['y']# print(xPiont,yPiont)# 获取element的宽、高
    element_width = xPiont + element.size['width']
    element_height = yPiont + element.size['height']# print(element_width,element_height)
    picture = Image.open(r'临时截图\\full.png')'''
    crop()--  一个显式的参数:一个4元组
    Image.crop(box=None):图像返回一个矩形区域,box是一个四元组 限定所述左,上,右,和下像素坐标
    参数:box--裁剪矩形,作为(左,上,右,下)-tuple;返回类型:Image;返回:一个Image对象
    所以你应该重写它:
    img.crop((414,122,650,338))
    #        ^    4-tuple    ^
    '''
    picture = picture.crop((xPiont, yPiont, element_width, element_height))# 截取想要的区域# 时间格式进行格式化
    current_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
    tim = path + current_time +"_"+ patient_id +".png"# 将路径、文件名组合到一起,如果不用id,将 + "_" + patient_id 这段去掉即可
    picture.save(tim)
    remove_file()# 删除 临时截图 这个目录及目录下所有文件return tim              # 返回保存的路径

本文标签: 临时截图 一个 编程