首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
聊聊Web自动化测试:黑盒、白盒、α测试、β测试、冒烟测试、回归测试
Selenium三剑客:WebDriver、IDE、Grid一网打尽
Selenium开发环境搭建
下载安装浏览器驱动:教你解决最麻烦的版本匹配问题
第一个Selenium测试:Selenium测试流程、源码分析
实现元素定位:掌握Selenium八大定位方法
通过打车生活案例,深入剖析WebDriver运行原理
掌握WebDriver核心方法和属性的使用
掌握WebElement核心方法和属性的使用
form表单:熟练掌握form表单操作步骤
掌握checkbox和radiobutton的定位技巧
下拉列表:熟练使用Select类,来实现下拉列表定位
弹框处理:掌握alert、confirm、prompt三种弹出的用法
Selenium三种等待方式:剖析原理、用法和应用场景
Selenium等待条件:掌握17种元素等待条件
掌握鼠标单击、双击、右击,键盘输入、键盘组合键的应用
熟练执行JavaScript的方法和技巧,掌握JavaScript操作滚动条
Selenium屏幕截图:实现屏幕截屏、按照日期时间格式保存图片
掌握frame、iframe定位,熟练frame的切入和切出
下载安装Selenium IDE:下载安装Chrome、Firefox插件IDE
熟练Selenium IDE菜单栏、工具类、命令窗口的使用
Selenium IDE实现录制和回放及脚本导出
项目环境搭建:安装JDK、MySQL、Tomcat和测试系统
需求分析和用例设计:深度挖掘需求,掌握测试用例设计范式
项目架构设计:掌握分层设计思想,合理设计目录和包结构
解决验证码问题-方案一:使用pytesseract和Pillow实现验证码识别
解决验证码问题-方案二:通过第三方AI库识别验证码
实现工具类:设计获得验证码、随机字符串生成、cookie操作工具类
完成用户注册测试用例:解决验证码、等待弹框等复杂内容
完成用户登录测试用例:实现登录成功和失败测试
完成管理员登录测试用例:完成验证码正确和错误测试用例
完成文章分类测试用例:解决测试用例依赖问题
完成添加、删除文章测试用例
unittest简介:测试用例、测试套件、测试运行器、测试加载器
unittest中的方法:掌握各种setup、teardown和断言方法
测试用例、测试套件和测试加载器:掌握加载测试用例的四种方法
使用unittest重构测试用例:掌握使用unittest模块的方法和技巧
为项目添加测试报告:使用第三方模块实现测试报告
pytest框架简介:pytest安装、用例编写规则、执行用例
pytest标记:查找测试策略、标记测试函数
pytest参数化处理:使用参数化装饰器、解析列表、元组、字典等数据
pytest Fixture:使用fixture实现用例之间的调用
pytest setup 和 teardown
pytest allure生成测试报告
使用pytest重构项目:实现用例依赖、测试报告、数据参数化
logging模块简介:日志的作用、等级和常用函数
logging日志格式输出:日志发生的时间、文件、模块、行号等信息格式输出
logging模块四大组件:Logger、Handler、Formatter、Filter的用法
为项目添加日志:将日志应用到项目
使用csv模块读取CSV文件,使用pytest参数化实现DDT
使用json模块读取json文件,使用pytest参数化实现DDT
使用xlrd模块读取excel文件,使用pytest参数化实现DDT
Selenium读取数据库数据:将数据保存到数据库,实现数据驱动的测试
Selenium DDT:使用DDT模块实现数据驱动的测试
使用DDT思想重构项目:使用数据库保存数据,将数据驱动思想应用到项目
POM设计模式简介:理解页面-对象-模型设计模式,实现代码的松耦合
设计BasePage类:设计基类,提高项目的代码重用性
设计项目页面对应的PO类:使用POM设计模式设计PO类
设计项目测试用例:将POM设计模式应用到项目
Selenium Grid下载安装:配置Java运行环境,下载安装Selenium Grid
Selenium注册node节点
使用Selenium执行远程测试
Jenkins环境搭建:下载安装Jenkins
在Jenkins中运行项目
邮件通知:实现邮件通知功能
定时运行项目,实现真正的自动化测试
当前位置:
首页>>
技术小册>>
Selenium自动化测试实战
小册名称:Selenium自动化测试实战
### Selenium屏幕截图:实现屏幕截屏、按照日期时间格式保存图片 在自动化测试领域,Selenium凭借其强大的功能和灵活性,成为了Web自动化测试的首选工具之一。在进行自动化测试时,经常会遇到需要记录测试过程中的关键页面状态或错误信息的情况,此时,屏幕截图功能就显得尤为重要。屏幕截图不仅能帮助测试人员快速定位问题,还能在测试报告中提供直观的视觉证据。本章将详细介绍如何在Selenium中实现屏幕截屏功能,并演示如何按照日期时间格式保存截图图片,以便于后续的查找和管理。 #### 一、Selenium屏幕截图基础 Selenium提供了简便的API来捕获浏览器当前显示的页面为图片,这一功能主要通过WebDriver的`get_screenshot_as_png()`或`get_screenshot_as_base64()`方法实现。其中,`get_screenshot_as_png()`方法返回的是PNG格式的屏幕截图数据的二进制流,而`get_screenshot_as_base64()`则返回Base64编码的字符串,适用于需要直接在HTML或文本中嵌入图片的场景。 ##### 示例代码:捕获屏幕截图并保存为PNG文件 以下是一个使用Python和Selenium WebDriver捕获当前屏幕截图并保存为PNG文件的简单示例: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import time # 设置ChromeDriver路径(这里使用webdriver_manager自动管理驱动) driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) try: # 打开网页 driver.get("https://www.example.com") # 执行一些操作,比如点击按钮等(此处省略) # 等待页面加载完成(可选) time.sleep(2) # 注意:实际项目中应使用WebDriverWait等更优雅的等待方式 # 捕获屏幕截图 screenshot = driver.get_screenshot_as_png() # 保存截图到文件 with open("screenshot.png", "wb") as file: file.write(screenshot) print("截图已保存为screenshot.png") finally: # 关闭浏览器 driver.quit() ``` #### 二、按照日期时间格式保存图片 在实际应用中,为了更好地管理多个截图文件,通常会希望将截图按照日期时间格式命名,以便快速查找和排序。Python的`datetime`模块提供了丰富的日期和时间处理功能,可以轻松实现这一需求。 ##### 示例代码:按照日期时间格式保存屏幕截图 ```python from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from datetime import datetime import time # 设置ChromeDriver路径 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) try: # 打开网页 driver.get("https://www.example.com") # 执行一些操作(此处省略) # 等待页面加载完成 time.sleep(2) # 捕获屏幕截图 screenshot = driver.get_screenshot_as_png() # 获取当前日期时间,并格式化为字符串 now = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") # 拼接文件名 filename = f"screenshot_{now}.png" # 保存截图到文件 with open(filename, "wb") as file: file.write(screenshot) print(f"截图已保存为{filename}") finally: # 关闭浏览器 driver.quit() ``` 在上述示例中,我们首先通过`datetime.now()`获取当前的日期和时间,然后使用`strftime`方法将其格式化为一个包含年、月、日、时、分、秒的字符串。之后,我们将这个字符串与“screenshot_”前缀拼接,形成最终的文件名。这样,每次保存的截图文件都会有一个独一无二的名称,便于后续的管理和查找。 #### 三、高级应用:处理异常和批量截图 在自动化测试中,处理可能出现的异常是确保测试稳定性和可靠性的关键。同时,在需要测试多个页面或执行多个测试用例时,批量截图功能也显得尤为重要。 ##### 1. 异常处理 在编写自动化测试脚本时,应当考虑到各种可能的异常情况,如元素未找到、页面加载超时等,并适当使用try-except语句块来捕获和处理这些异常。对于屏幕截图来说,可以在捕获到异常后执行截图操作,以便记录出错时的页面状态。 ##### 2. 批量截图 批量截图通常涉及到循环执行测试步骤和截图操作。例如,你可能需要测试一个网站上的所有商品详情页,并为每个页面都保存一个截图。这可以通过将测试步骤封装在循环中,并在每次循环结束时执行截图操作来实现。 #### 四、总结 屏幕截图是自动化测试中不可或缺的功能之一,它能够帮助测试人员快速定位问题、记录测试结果,并在测试报告中提供直观的视觉证据。Selenium提供了强大的屏幕截图功能,通过简单的API调用即可实现。同时,结合Python的`datetime`模块,我们可以轻松地将截图按照日期时间格式命名,以便于后续的管理和查找。在编写自动化测试脚本时,合理利用屏幕截图功能,并结合异常处理和批量截图等高级应用,可以显著提升测试的效率和可靠性。
上一篇:
熟练执行JavaScript的方法和技巧,掌握JavaScript操作滚动条
下一篇:
掌握frame、iframe定位,熟练frame的切入和切出
该分类下的相关小册推荐:
Python与办公-玩转PPT
Python与办公-玩转Word
Python与办公-玩转PDF
Python编程轻松进阶(三)
Python编程轻松进阶(二)
Python合辑1-Python语言基础
Python编程轻松进阶(四)
Python合辑13-面向对象编程案例(上)
Python高并发编程与实战
Python爬虫入门与实战开发(上)
实战Python网络爬虫
Python爬虫入门与实战开发(下)