当前位置: 首页 > news >正文

python 如何实现执行selenium自动化测试用例自动录屏?

    做自动化测试已经好多年了,随着项目技术的正增长提升,我们也不断完善并提高自己的技术能力, 下面给大家分享一个 selenium 自动化执行测试用例的录屏功能。希望对大家有帮助!
 

    首先,我们为什么要执行自动化录屏功能呢?
 

    不是有执行用例的日志就可以了吗? 这个答案是否定的。 因为传统的自动化测试主要关注于功能性的验证;而且有时候我们也很难无法捕捉测试过程的复现和步骤。这个时候就要引用到自动化执行测试用例的录屏功能了,。

    在Selenium自动化测试框架的基础上,集成屏幕录制功能。这样,在测试脚本执行的过程中,可以自动捕捉屏幕上的所有活动,包括视频播放、用户交互等,从而更直观地发现潜在的视觉问题或性能问题。

想象一下,你是一名负责一款在线教育平台自动化测试的工程师,这个平台提供了丰富的视频课程供用户学习。为了确保用户在观看视频时的体验流畅无阻,你决定引入一种创新的方法——使用Python结合Selenium进行自动化测试的同时,自动录制屏幕以捕捉任何潜在的视觉问题或性能瓶颈。

解决方案

下面给大家实现解决方案

  1. 环境搭建:

    • 安装Python及Selenium库。

    • 选择一个合适的屏幕录制库,如opencv-python结合pyautogui或专业的屏幕录制库如pyscreencast

  2. 编写测试脚本:

    • 使用Selenium编写测试脚本,模拟用户登录、选择课程、播放视频等操作流程。

    • 在测试脚本中加入屏幕录制的启动和停止逻辑,确保在测试执行期间进行录制。

  3. 执行测试并录制:

    • 运行测试脚本,Selenium将模拟用户行为,同时屏幕录制功能将捕捉所有屏幕活动。

    • 录制完成后,将视频文件保存到指定位置,便于后续分析和评审。

  4. 分析视频:

    • 观看录制的视频,检查视频播放是否流畅、画面是否清晰、界面布局是否合理等。

    • 如果发现任何问题,可以根据视频中的时间戳快速定位到具体的测试步骤或代码位置,进行修复和优化。

有了解决方案后, 我们根据这个思路去实操代码,代码如下:

import cv2import numpy as npimport timeimport pyautogui  # 用于捕获屏幕截图from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.chrome.service import Servicefrom webdriver_manager.chrome import ChromeDriverManagerimport 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接口自动化测试实战教程全集(实战最新版)

 

http://www.lryc.cn/news/426046.html

相关文章:

  • 03 网络编程 TCP传输控制协议
  • 1. 数据结构——顺序表的主要操作
  • [openSSL]TLS 1.3握手分析
  • 无人机之螺旋桨的安装与维护
  • 手机设备IP地址切换:方法、应用与注意事项
  • 华为HCIP证书好考吗?详解HCIP证书考试难易程度及备考策略!
  • 《SPSS零基础入门教程》学习笔记——05.模型入门
  • 如何用不到一分钟的时间将Excel电子表格转换为应用程序
  • WordPress 中 cURL 请求出现 504 网关超时错误的解决方法
  • 事件和委托的区别
  • 低功耗蓝牙协议栈如何学习?
  • ROS 2中,CMakeList.txt常见语法
  • 使用 prefetchComponents 进行组件预取
  • 『 C++ 』IO流
  • enhanced Input Action IA_Look中Action value引脚没有分割结构体引脚的选项
  • C# NetworkStream、ConcurrentDictionary、Socket类、SerialPort、局域网IP 和广域网IP
  • 大模型--学习范式
  • Hadoop-yarn-unauthorized 未授权访问漏洞
  • 工作流调度系统(DolphinScheduler、Azkaban、Airflow、Oozie 和 XXL-JOB)
  • PyTorch 基础学习(5)- 神经网络
  • CI/CD 自动化:最大限度地提高极狐GitLab 群组的“部署冻结”影响
  • 单元训练10:定时器实现秒表功能-数组方式
  • 国外项目管理软件最佳实践:选型与应用
  • Angular组件概念
  • 嵌入式人工智能ESP32(4-PWM呼吸灯)
  • 继承 (上)【C++】
  • WPF打印控件内容
  • [C++][opencv]基于opencv实现photoshop算法图像剪切
  • 四十、大数据技术之Kafka3.x(3)
  • redis——基本命令