17-截图screenshot

简介: 17-截图screenshot

1. 截图方法

  • driver.get_screenshot_as_file(filename):将当前窗口的屏幕截图转换为PNG图像文件保存
  • get_screenshot_as_png():获取作为二进制数据的当前窗口的截图
  • get_screenshot_as_base64():以base64编码字符串的形式获取当前窗口的屏幕截图,一般使用在HTML中的链接图片

2. 示例代码

 2.1 捕获异常实现截图

1. # -*- coding: utf-8 -*-
2. # @Time    : 2021/1/23
3. # @Author  : 大海
4. import time
5. from selenium import webdriver
6. from selenium.common.exceptions import NoSuchElementException
7. 
8. driver = webdriver.Chrome()
9. 
10. driver.get('https://baidu.com')
11. 
12. # 获取当前时间
13. nowTime = time.strftime("%Y%m%d.%H.%M.%S")
14. file_path = './%s.png' % nowTime  # 格式化字符串
15. 
16. # 发生异常时截图,捕获异常
17. try:
18.     driver.find_element_by_id('kw1').send_keys('selenium')
19. except NoSuchElementException:   
20.     driver.get_screenshot_as_file(file_path) 
21. finally:
22.     driver.close()

 2.2 装饰器实现截图

1. # -*- coding: utf-8 -*-
2. # @Time    : 2021/1/23
3. # @Author  : 大海
4. import time
5. from functools import wraps
6. from selenium import webdriver
7. from selenium.common.exceptions import NoSuchElementException
8. 
9. driver = webdriver.Chrome()
10. driver.get('https://baidu.com')
11. 
12. # 获取当前时间
13. nowTime = time.strftime("%Y%m%d.%H.%M.%S")
14. file_path = './%s.png' % nowTime  # 格式化字符串
15. 
16. 
17. # 装饰器
18. def screenshot(func):
19.     @wraps(func)
20. def wrapper(*args, **kwargs):
21. try:
22. return func(*args, **kwargs)
23. except Exception as e:
24.             driver.get_screenshot_as_file(file_path)
25. print(e)
26. finally:
27.             driver.close()
28. 
29. return wrapper
30. 
31. 
32. # 发生异常时截图
33. @screenshot
34. def screenshot_example():
35.     driver.find_element_by_id('kw1').send_keys('selenium')
36. 
37. 
38. # 调用函数
39. screenshot_example()


相关文章
|
9月前
|
Web App开发 JSON 前端开发
2.3K star!5分钟搭建专属网课平台?这个开源项目强得离谱!
嗨,大家好,我是小华同学。今天为大家介绍一款专为导师设计的开源视频会议系统——Nettu Meet。它具备实时音视频、共享白板、屏幕共享、聊天和文件共享等功能,特别适合在线辅导、艺术技能培训和语言学习交流等场景。用户可以轻松创建会议并自定义界面,提升在线教学效率和互动性。
197 1
2.3K star!5分钟搭建专属网课平台?这个开源项目强得离谱!
|
网络协议 Java
JAVA实现心跳检测【长连接】
这篇文章介绍了Java中实现心跳检测机制的方法,包括心跳机制的简介、实现方式、客户端和服务端的代码实现,以及具体的测试结果。文中详细阐述了如何通过自定义心跳包和超时检测来维持长连接,并提供了完整的客户端和服务端示例代码。
JAVA实现心跳检测【长连接】
|
Web App开发 缓存 文字识别
scrapy_selenium的常见问题和解决方案
scrapy_selenium是一个结合了scrapy和selenium的库,可以让我们使用selenium的webdriver来控制浏览器进行动态网页的爬取。但是在使用scrapy_selenium的过程中,我们可能会遇到一些问题,比如如何设置代理、如何处理反爬、如何优化性能等。本文将介绍一些scrapy_selenium的常见问题和解决方案,希望对你有所帮助。
621 0
scrapy_selenium的常见问题和解决方案
|
NoSQL Java Redis
[已解决]报异常java.io.InvalidClassException的解决方法|对象序列化实现Serializable会出现java.io.InvalidClassException的异常
[已解决]报异常java.io.InvalidClassException的解决方法|对象序列化实现Serializable会出现java.io.InvalidClassException的异常
|
前端开发
react 添加、删除 cookie
react 添加、删除 cookie
207 1
|
数据采集 存储 算法
「AIGC算法」图搜索算法详解
本文探讨了图搜索算法,包括遍历和最短路径搜索。DFS和BFS是遍历算法,前者使用栈深入搜索,后者用队列逐层遍历。Dijkstra、Bellman-Ford、A*、Floyd-Warshall和Johnson算法则解决最短路径问题。文中还给出了DFS的Python实现示例。这些算法在路径规划、网络分析等领域有重要应用。
806 0
|
编解码
麒麟设置分辨率
麒麟设置分辨率
650 1
|
安全 Java 数据安全/隐私保护
Spring Boot中的数据加密与解密
Spring Boot中的数据加密与解密