Background
通常在执行自动化用例的时候,是不会一直在旁边检测,报错的时候想要留下一些证据,可以在代码中进行添加截图操作,通过截图把想要的内容截图下来。
方法一:get_screenshot_as_file(filename)
获取当前屏幕截图: get_screenshot_as_file(filename),filename为图片名称,需要填写完整路径。
注意: 图片后缀只能是png,如果是jpg或者其他格式的话,会报错,但是程序还是回正常执行。
self.driver.get_screenshot_as_file('123.png')
方法二:get_screenshot_as_base64()
获取当前屏幕截图,保存格式为base64,base64保存的图片多数用来放入html报告中。需要导入base64模块,使用base64模块展示图片
from selenium import webdriver
import time
import base64
class TestCase(object):
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.get('http://www.baidu.com')
def test(self):
# 通过base64进行保存图片
b64 = self.driver.get_screenshot_as_base64()
image = base64.b64decode(b64)
file = open('baidu.jpg', "wb")
file.write(image)
self.driver.quit()
方法三:save_screenshot(filename)
获取当前窗口屏幕截图的截图。
self.driver.save_screenshot('baidu.png')
方法四:get_screenshot_as_png()
以二进制的方式进行获取当前屏幕截图。
# 通过二进制的方法进行保存图片到本地
x = self.driver.get_screenshot_as_png()
file = open('xxx.png', "wb")
file.write(x)
self.driver.quit()
异常捕捉
通常错误截图大多数用在用例执行失败的时候,通过异常捕捉进行截取图片内容。
except Exception as msg:
print("异常原因", msg)
# 时间戳名称,防止覆盖
st = strftime("%Y-%m-%d-%H-%M-%S", localtime(time()))
file_name = st + '.png'
# 异常截图保存在本地
self.driver.get_screenshot_as_file(file_name)
实例Code:
from selenium import webdriver
from time import sleep, localtime, strftime, time
import base64
import os
class TestCase(object):
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.get('http://www.baidu.com')
def test(self):
self.driver.find_element_by_id('kw').send_keys('Github')
self.driver.find_element_by_id('su').click()
sleep(4)
# 保存截屏-直接命名
# self.driver.save_screenshot('baidu.png')
# 保存截屏-时间格式命名
st = strftime("%Y-%m-%d-%H-%M-%S", localtime(time()))
file_name = st + '.png'
self.driver.save_screenshot(file_name)
def test2(self):
# 获取当前屏幕截图
st = strftime("%Y-%m-%d-%H-%M-%S", localtime(time()))
file_name = st + '.png'
path = os.path.abspath('screenshot')
file_path = path + '/' + file_name
self.driver.get_screenshot_as_file(file_path)
self.driver.quit()
def test3(self):
# 通过base64进行保存图片
b64 = self.driver.get_screenshot_as_base64()
image = base64.b64decode(b64)
file = open('1.jpg', "wb")
file.write(image)
self.driver.quit()
def test4(self):
# 通过二进制的方法进行保存图片到本地
x = self.driver.get_screenshot_as_png()
file = open('xxx.png', "wb")
file.write(x)
self.driver.quit()
def test4(self):
# 异常处理截图
try:
# 定位元素错误
self.driver.find_element_by_id('ka').send_keys('Github')
print('Pass')
self.driver.quit()
except Exception as msg:
print("异常原因", msg)
# 时间戳名称,防止覆盖
st = strftime("%Y-%m-%d-%H-%M-%S", localtime(time()))
file_name = st + '.png'
# 异常截图保存在本地
self.driver.get_screenshot_as_file(file_name)
if __name__ == '__main__':
case = TestCase()
# case.test1()
# case.test2()
# case.test3()
case.test4()