17-截图screenshot

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

目录

1. 截图方法

2. 示例代码

  2.1 捕获异常实现截图

  2.2 装饰器实现截图


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()

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习de测试小白

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值