做自动化测试已经好多年了,随着项目技术的正增长提升,我们也不断完善并提高自己的技术能力, 下面给大家分享一个 selenium 自动化执行测试用例的录屏功能。希望对大家有帮助!
首先,我们为什么要执行自动化录屏功能呢?
不是有执行用例的日志就可以了吗? 这个答案是否定的。 因为传统的自动化测试主要关注于功能性的验证;而且有时候我们也很难无法捕捉测试过程的复现和步骤。这个时候就要引用到自动化执行测试用例的录屏功能了,。
在Selenium自动化测试框架的基础上,集成屏幕录制功能。这样,在测试脚本执行的过程中,可以自动捕捉屏幕上的所有活动,包括视频播放、用户交互等,从而更直观地发现潜在的视觉问题或性能问题。
想象一下,你是一名负责一款在线教育平台自动化测试的工程师,这个平台提供了丰富的视频课程供用户学习。为了确保用户在观看视频时的体验流畅无阻,你决定引入一种创新的方法——使用Python结合Selenium进行自动化测试的同时,自动录制屏幕以捕捉任何潜在的视觉问题或性能瓶颈。
解决方案
下面给大家实现解决方案
-
环境搭建:
-
安装Python及Selenium库。
-
选择一个合适的屏幕录制库,如
opencv-python
结合pyautogui
或专业的屏幕录制库如pyscreencast
。
-
-
编写测试脚本:
-
使用Selenium编写测试脚本,模拟用户登录、选择课程、播放视频等操作流程。
-
在测试脚本中加入屏幕录制的启动和停止逻辑,确保在测试执行期间进行录制。
-
-
执行测试并录制:
-
运行测试脚本,Selenium将模拟用户行为,同时屏幕录制功能将捕捉所有屏幕活动。
-
录制完成后,将视频文件保存到指定位置,便于后续分析和评审。
-
-
分析视频:
-
观看录制的视频,检查视频播放是否流畅、画面是否清晰、界面布局是否合理等。
-
如果发现任何问题,可以根据视频中的时间戳快速定位到具体的测试步骤或代码位置,进行修复和优化。
-
有了解决方案后, 我们根据这个思路去实操代码,代码如下:
import cv2
import numpy as np
import time
import pyautogui # 用于捕获屏幕截图
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 threading # 用于在单独的线程中捕获帧
class ScreenRecorder:
"""屏幕录制类"""
def __init__(self, filename='output.avi', fps=20.0, screen_size=(1920, 1080)):
self.fourcc = cv2.VideoWriter_fourcc(*"XVID")
self.out = None
self.fps = fps
self.filename = filename
self.screen_size = screen_size
self.recording = False
def start(self):
"""开始录制"""
self.out = cv2.VideoWriter(self.filename, self.fourcc, self.fps, self.screen_size)
self.recording = True
print("开始录制...")
def capture_frame(self):
"""捕获一帧并写入视频文件"""
if self.recording:
img = pyautogui.screenshot() # 截取整个屏幕
img = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) # 转换为 OpenCV 格式
img = cv2.resize(img, self.screen_size) # 确保图像大小符合要求
self.out.write(img)
def stop(self):
"""停止录制并释放资源"""
if self.out is not None:
self.out.release()
self.recording = False
print("录制结束,文件名为:", self.filename)
def run_test_case(recorder=None):
"""执行自动化测试用例"""
driver = webdriver.Chrome()
# 打开网页
driver.get('https://www.baidu.com')
driver.set_window_size(1600, 900)
time.sleep(5) # 等待页面加载
# 执行一些操作
search_box = driver.find_element(By.ID, 'kw') # 查找搜索框
search_box.send_keys('Selenium')
search_box.submit()
time.sleep(5) # 等待搜索结果加载
def capture_frames(recorder):
"""在单独线程中持续捕获帧"""
while recorder.recording:
recorder.capture_frame()
time.sleep(1 / recorder.fps) # 控制录制帧率
def main():
"""主函数"""
recorder = ScreenRecorder(filename='test_recording.avi')
# 开始录制
recorder.start()
# 启动帧捕获线程
capture_thread = threading.Thread(target=capture_frames, args=(recorder,))
capture_thread.start()
try:
# 启动自动化测试用例
run_test_case(recorder)
finally:
# 停止录制并等待线程结束
recorder.stop()
capture_thread.join() # 等待捕获线程结束
if __name__ == '__main__':
main()
这是 执行代码过程的:
这是我整理的《2024最新Python自动化测试全套教程》,以及配套的接口文档/项目实战【网盘资源】,需要的朋友可以下方视频的置顶评论获取。肯定会给你带来帮助和方向。
【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)