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 # 返回保存的路径版权声明:本文标题:webdriver中的截图截图方法_webdriver截图 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1774348587a3570703.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论