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

部署运行你感兴趣的模型镜像

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

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

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

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

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

解决方案

下面给大家实现解决方案

  1. 环境搭建:

    • 安装Python及Selenium库。

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

  2. 编写测试脚本:

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

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

  3. 执行测试并录制:

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

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

  4. 分析视频:

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

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

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

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

这是 执行代码过程的:

图片

图片

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值