目录
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()
该篇博客介绍了如何在Python中利用Selenium库在出现异常时捕获并保存网页截图。通过两种方法展示了实现这一功能:一是直接在异常处理中调用`get_screenshot_as_file()`方法;二是使用装饰器在函数执行异常时自动截图。示例代码包括了异常捕获和装饰器的详细应用,便于读者理解和实践。
1145

被折叠的 条评论
为什么被折叠?



