目录
1. 截图方法
- driver.get_screenshot_as_file(filename):将当前窗口的屏幕截图转换为PNG图像文件保存
- get_screenshot_as_png():获取作为二进制数据的当前窗口的截图
- get_screenshot_as_base64():以base64编码字符串的形式获取当前窗口的屏幕截图,一般使用在HTML中的链接图片
2. 示例代码
2.1 捕获异常实现截图
# -*- coding: utf-8 -*-
# @Time : 2021/1/23
# @Author : 大海
import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome()
driver.get('https://baidu.com')
# 获取当前时间
nowTime = time.strftime("%Y%m%d.%H.%M.%S")
file_path = './%s.png' % nowTime # 格式化字符串
# 发生异常时截图,捕获异常
try:
driver.find_element_by_id('kw1').send_keys('selenium')
except NoSuchElementException:
driver.get_screenshot_as_file(file_path)
finally:
driver.close()
2.2 装饰器实现截图
# -*- coding: utf-8 -*-
# @Time : 2021/1/23
# @Author : 大海
import time
from functools import wraps
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome()
driver.get('https://baidu.com')
# 获取当前时间
nowTime = time.strftime("%Y%m%d.%H.%M.%S")
file_path = './%s.png' % nowTime # 格式化字符串
# 装饰器
def screenshot(func):
@wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception as e:
driver.get_screenshot_as_file(file_path)
print(e)
finally:
driver.close()
return wrapper
# 发生异常时截图
@screenshot
def screenshot_example():
driver.find_element_by_id('kw1').send_keys('selenium')
# 调用函数
screenshot_example()