get_screenshot_as_file 方法
语法:
get_screenshot_as_file(self, filename)
from selenium import webdriver
driver = webdriver.Chrome()
...
driver.get_screenshot_as_file('图片路径')
filename,保存截图的路径,路径应该为绝对路径,以‘/’隔开目录,如‘D:/文档’
参数 filename 应该以 .png
文档:
def get_screenshot_as_file(self, filename):
"""
Saves a screenshot of the current window to a PNG image file. Returns
False if there is any IOError, else returns True. Use full paths in
your filename.
:Args:
- filename: The full path you wish to save your screenshot to. This
should end with a `.png` extension.
:Usage:
driver.get_screenshot_as_file('/Screenshots/foo.png')
"""
if not filename.lower().endswith('.png'):
warnings.warn("name used for saved screenshot does not match file "
"type. It should end with a `.png` extension", UserWarning)
png = self.get_screenshot_as_png()
try:
with open(filename, 'wb') as f:
f.write(png)
except IOError:
return False
finally:
del png
return True
例1:
import os
import time
from datetime import datetime
from selenium import webdriver
import traceback
def currentDate():
'''生成当前日期字符串'''
date = time.localtime()
return '-'.join([str(date.tm_year), str(date.tm_mon),str(date.tm_mday)])
def currentTime():
'''生成当前时间字符串'''
date = time.localtime()
return '-'.join([str(date.tm_hour), str(date.tm_min),str(date.tm_sec)])
def createDir():
'''创建当前日期和当前时间目录'''
path = os.path.dirname(os.path.abspath(__file__))
dateDir = os.path.join(path,currentDate())
#如果当前日期目录不存的话就创建
if not os.path.exists(dateDir):
os.mkdir(dateDir)
timeDir= os.path.join(dateDir,currentTime())
#如果当前时间目录不存的话就创建
if not os.path.exists(timeDir):
os.mkdir(timeDir)
return timeDir
def takeScreenshot(driver,savePath,pictureName):
picturePath = os.path.join(savePath, pictureName+'.png')
try:
driver.get_screenshot_as_file(picturePath)
except Exception as e:
print(traceback.print_exc())
# 获取浏览器驱动实例
driver = webdriver.Chrome(executable_path='f:\\chromedriver')
#访问搜狗首页
driver.get('http://www.sogou.com')
time.sleep(3)
#搜狗首页截图
takeScreenshot(driver,createDir(),'sogou')
time.sleep(1)
#退出浏览器
例2
from selenium import webdriver
import os
import time
from TestData.PutOutPath import PutoutPath
driver = webdriver.Edge() # Edge浏览器
# driver = webdriver.Edge("驱动路径")
driver.get('https://www.baidu.com')
# 截图
now = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
#path = PutoutPath.Photopath()
path='D:/文档/自建UI自动化需求说明书/自动化框架/PutOut'
print(path)
photoname = os.path.join(path+'/ErrorPhoto/' + now + '.png')
print(photoname)
time.sleep(5)
driver.get_screenshot_as_file(photoname)
driver.close()
save_screenshot方法
和get_screenshot_as_file方法类似
语法:
save_screenshot(self, filename)
from selenium import webdriver
driver = webdriver.Chrome
driver.save_screenshot(’截图保存路径‘)
def takeScreenshot(driver,savePath,pictureName):
picturePath = os.path.join(savePath, pictureName+'.png')
try:
#和get_screenshot_as_file方法类似
driver.save_screenshot(picturePath)
except Exception as e:
print(traceback.print_exc())
Pillow包
图像库PIL(Python Image Library)是Python的第三方图像处理库
需要先在命令行下安装pillow包,命令如下:pip install Pillow
语法:
from PIL import ImageGrab
#截图
im=ImageGrab.grab()
#保存图片
#Image.save(fp, format=None, **params)
im.save(picturePath,"jpeg")
import os
import time
from datetime import datetime
from selenium import webdriver
import traceback
def currentDate():
'''生成当前日期字符串'''
date = time.localtime()
return '-'.join([str(date.tm_year), str(date.tm_mon),str(date.tm_mday)])
def currentTime():
'''生成当前时间字符串'''
date = time.localtime()
return '-'.join([str(date.tm_hour), str(date.tm_min),str(date.tm_sec)])
def createDir():
'''创建当前日期和当前时间目录'''
path = os.path.dirname(os.path.abspath(__file__))
dateDir = os.path.join(path,currentDate())
#如果当前日期目录不存的话就创建
if not os.path.exists(dateDir):
os.mkdir(dateDir)
timeDir= os.path.join(dateDir,currentTime())
#如果当前时间目录不存的话就创建
if not os.path.exists(timeDir):
os.mkdir(timeDir)
return timeDir
def takeScreenshot(savePath,pictureName):
picturePath = os.path.join(savePath, pictureName+'.png')
try:
from PIL import ImageGrab
im=ImageGrab.grab()
im.save(picturePath,"jpeg")
except Exception as e:
print(traceback.print_exc())
# 获取浏览器驱动实例
driver = webdriver.Chrome(executable_path='f:\\chromedriver')
#访问搜狗首页
driver.get('http://www.sogou.com')
time.sleep(3)
#搜狗首页截图
takeScreenshot(driver,createDir(),'sogou')
time.sleep(1)
#退出浏览器
driver.quit()
说明
前两种方式截的是浏览器的相关页面,第3种是整个电脑桌面;
创建时间或日期目录时%Y-%m-%d_%H:%M:%S这种是错误的格式,所有的包括 ‘’ : / \ ? * < > | 这些特殊字符windows文件名无都无法使用,也无法保存,起名时需要注意,可以换成这种%Y-%m-%d_%H_%M_%S