细节有惊喜!详解Web自动化框架UI自动截图与画面回放实现!

news2024/11/30 0:50:11

目录

 前言:

Web自动化测试框架基本结构及原理

UI自动截图实现方法

基于Selenium截图实现UI自动截图的过程如下:

基于Selenium截图的代码实现如下:

基于爬虫截图实现UI自动截图的流程如下:

基于爬虫截图的代码实现如下:

画面回放实现方法

基于PIL模块回放的实现过程如下:

基于PIL模块回放的代码实现如下:

基于OpenCV模块回放的实现过程如下:

基于OpenCV模块回放的代码实现如下:

 总结:


 前言:

在现今互联网快速发展的时代,网站的出现已经成为了人民日益增长的需求,而在这个过程中,自动化测试也变得越来越重要。随着Web前端技术快速发展,Web自动化测试框架成为了测试领域的重要工具之一。而在使用Web自动化测试框架的过程中,UI自动截图及画面回放成为了框架中一个重要的环节。

本文将从介绍Web自动化框架的基本结构和原理为起点,详细讲解UI自动截图及画面回放的实现方法。最后,我们将以Python语言作为实现语言编写代码,为读者实际演示如何通过Web自动化框架封装实现UI自动截图及画面回放的具体细节。

Web自动化测试框架基本结构及原理

在Web自动化测试框架中,主要包含两部分:WebDriver以及语言绑定。其中,WebDriver是一个协议,用于描述网站的行为及操作。而语言绑定则是将WebDriver协议与不同的编程语言进行绑定,从而实现对WebDriver进行自动化测试的目的。

在进行Web自动化测试时,需要使用WebDriver实现对WebUI界面的自动化操作。而要实现UI自动截图及画面回放,需要实现对WebUI界面的状态进行监听,保存该状态信息并根据该信息进行回放操作。

UI自动截图实现方法

UI自动截图所要做的就是在自动执行WebUI操作期间,及时对UI状态进行截图。这样可以帮助测试人员更好地理解测试过程,更快地定位UI异常信息。常见的UI自动截图实现方法有两种:基于Selenium截图;基于爬虫截图。

基于Selenium截图实现UI自动截图的过程如下:

1.初始化 webdriver 对象,并访问想要截图的页面;
2.获取页面的宽度和高度;
3.进行屏幕截图,并保存到指定的本地文件目录中。

基于Selenium截图的代码实现如下:

from selenium import webdriver
from PIL import Image

browser = webdriver.Chrome()
browser.get('http://www.example.com/')
browser.maximize_window()

# Get width and height of the webpage
width, height = browser.execute_script("return [window.innerWidth, window.innerHeight]")

# Take screenshot of the webpage
screenshot = browser.get_screenshot_as_png()
screenshot = Image.open(BytesIO(screenshot))

# Crop the screenshot to desired height and width
left = 0
top = 0
right = width
bottom = height
screenshot = screenshot.crop((left, top, right, bottom))

# Save screenshot to a file
screenshot.save('/path/to/screenshot.png')

基于爬虫截图实现UI自动截图的流程如下:

1.使用爬虫技术爬取想要截图的网站信息;
2.通过解析网站页面,获取需要截图的元素位置;
3.对获取到的元素进行截图;
4.将截图保存在指定的本地文件目录中。

基于爬虫截图的代码实现如下:

import requests
from PIL import Image
from io import BytesIO
from bs4 import BeautifulSoup

url = 'http://www.example.com/'
html = requests.get(url)

soup = BeautifulSoup(html.content, 'html.parser')
# Get the element to take screenshot of
element = soup.find('div', id='element_id')

# Find the position of element on page
location = element.location
size = element.size

# Take screenshot of the element only
screenshot = Image.open(BytesIO(html.content))
left = location['x']
top = location['y']
right = left + size['width']
bottom = top + size['height']
screenshot = screenshot.crop
((left, top, right, bottom))

# Save the screenshot to a file
screenshot.save('/path/to/screenshot.png')

画面回放实现方法

画面回放是指在执行自动化测试时,将之前的截图进行合理的处理,重新播放在测试环境中。画面回放可以帮助测试人员更好地理解测试过程,更快地定位UI异常信息。常见的画面回放实现方法有两种:基于PIL模块回放;基于OpenCV模块回放。

基于PIL模块回放的实现过程如下:

1.加载之前保存的UI截图;
2.遍历所有UI截图,显示在测试环境中。

基于PIL模块回放的代码实现如下:

from PIL import Image, ImageDraw
import os

# Get all the screenshots in the directory
screenshots_dir = '/path/to/screenshots'
screenshots = sorted(os.listdir(screenshots_dir))

# Create an image object for each screenshot and display it
for screenshot in screenshots:
    screenshot_path = os.path.join(screenshots_dir, screenshot)
    with Image.open(screenshot_path) as img:
        draw = ImageDraw.Draw(img)
        img.show()

基于OpenCV模块回放的实现过程如下:

1.遍历之前保存的所有UI截图;
2.使用OpenCV的imshow函数进行UI截图的播放。

基于OpenCV模块回放的代码实现如下:

import cv2
import os

# Get all the screenshot images in the directory
screenshots_dir = '/path/to/screenshots'
screenshots = sorted(os.listdir(screenshots_dir))

# Display each screenshot using OpenCV
for screenshot in screenshots:
    screenshot_path = os.path.join(screenshots_dir, screenshot)
    img = cv2.imread(screenshot_path)
    cv2.imshow('UI screenshot', img)
    cv2.waitKey(1000)  # Delay in milliseconds between screenshots

 总结:

综上所述,本文从Web自动化框架的基本结构和原理入手,详细地介绍了UI自动截图及画面回放的实现方法。同时,本文还以Python语言作为实现语言,提供相应的代码实现,希望能够帮助读者更好地理解和使用Web自动化测试框架。

 

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

获取方式:留言【自动化测试】即可

【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4N7http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=MyTLBK9pZ74qgHUVVZfITmBhScUS5qPC&authKey=hUGxEWvPxbiSTszm1V9wE6Z%2FFpVNEdf%2BzEe4UXSvDPN8LPV5WcLAO%2BQ0RLX5tKCR&noverify=0&group_code=574737577

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+vue4S店车辆管理系统(java项目源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的4S店车辆管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…

【评测】真我Realme GT Neo5手机性能评测

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 目录 购买记录 鲁大师评测 安兔兔评测 个人使用感受 优点 几个明显的体验感不好的点 大图、多图预警! 配置说明: 运行内存:12GB存储容量:256GB充电功率&#…

4.spring总结

文章目录 一、spring总结1、Spring三级缓存解决什么问题?2、Spring支持的几种bean的作用域?3、pring bean是否是线程安全?4、*Spring框架中bean的生命周期*?5、哪些是重要的bean生命周期方法?你能重载它们吗&#xff1…

《微服务实战》 第二十三章 Redis RDB AOF

前言 Redis 提供了两种持久化机制:第一种是 RDB,又称快照(snapshot)模式,第二种是 AOF 日志,也就追加模式。 1、RDB RDB 即快照模式,它是 Redis 默认的数据持久化方式,它会将数据…

【Flutter 工程】004-代码生成:functional_widget

【Flutter 工程】004-代码生成:functional_widget 文章目录 【Flutter 工程】004-代码生成:functional_widget一、概述1、Flutter 开发痛点2、functional_widget 函数小部件3、主页 二、基本使用1、安装 functional_widget2、传统写法3、运行结果4、代码…

App Inventor 2 连接打印机(Printer),自定义打印的实现

本教程主要分享App Inventor 2连接网络打印机进行自定义打印的思路及方法,这里只进行思路的讲解及关键步骤的效果演示,细节需自行完善。主要用到社交应用组件中的信息分享器组件。 打印App示意图 连接打印机教程(难度系数:★★&a…

值得尝试的Voyager Linux,没有Snap,出色的定制

一直以来我都不喜欢 Ubuntu GNOME 的默认外观,而且对Ubuntu强制使用Snap应用不是很喜欢,之前我用的是Ubuntu MATE这个发行版,直到我听说了Voyager Linux。今天特意安装试用了一下Voyager Linux 23.04,有几点功能我很喜欢&#xff…

适用于 Windows 电脑的 6 款最佳视频转换器

视频转换器可以帮助您转换和播放设备上不受支持的视频格式。减小视频文件大小、以通用格式组织所有视频或与他人共享文件以在不同设备上播放也很方便。 Windows 有很多视频转换器可供选择。有些是免费的,有些则提供适合专业用户的高级功能。在本指南中,…

Java程序设计入门教程--Java语言概述

目录 1.1 Java语言诞生与发展 1.2 Java语言的特点 1.3 运行机制与虚拟机 1.1 Java语言诞生与发展 Java语言的诞生最早可以追溯至1991年,那时称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境,其最初目的只是为了开发一种独…

完美解决接口测试难题,数据驱动带签名混合封装框架实现

目录 前言: 一、框架概述 二、框架架构 三、代码实现 四、实战步骤 五、总结 前言: 接口自动化测试是保障软件质量的重要手段之一,其自动化程度越高,越能有效提高软件测试效率。而接口自动化测试中,接口测试框架…

推荐 6 款还不错的文档协作工具~

你们团队是否正在寻找便捷丰富功能的文档协作软件? 文件协作软件帮助你和你的团队更有效地工作,并进行实时协作,为创新创造更多的空间。 但是,今天有数百种文档协作工具,你应该选择哪一种呢? 为了帮助你…

SpringSecurity的认证原理及如何自定义认证结合MyBatis替换原数据源

文章目录 一、自定义认证二、自定义登录界面三、自定义成功的处理1、前后端分离返回json 四、如何在前端显示异常1、传统的方法2、前后端分离返回错误的json 五、注销登录配置1、注销登录前后端不分离2、前后端分离的方法 六、登录⽤户数据获取1、SecurityContextHolder2、Secu…

【Netty】Netty 程序引导类(九)

文章目录 前言一、引导程序类二、AbstractBootStrap 抽象类三、Bootstrap 类四、ServerBootstrap 类五、引导服务器5.1、 实例化引导程序类5.2、设置 EventLoopGroup5.3、指定 Channel 类型5.4、指定 ChannelHandler5.5、设置 Channel 选项5.6、绑定端口启动服务 六、引导客户端…

STL-reverse_iterator 反向迭代器

回顾 对于STL中的容器,迭代器(iterator)是很重要的部分,同时迭代器也是STL六大组件之一,在之前我们实现vector和list中,我们已经对于迭代器有了初步的认识,为什么设计迭代器? 就是为了能像数组中的指针一样…

虹科干货|创新求变:虹科Redis企业版数据库驱动金融实时业务

BDO调查显示,43%的金融企业正计划全力加速数字化转型,互联网巨头与金融科技初创公司正在颠覆传统。”与此同时,客户行为、消费习惯和期望持续变化,以客户为中心的快速金融服务已成趋势,企业微服务、云原生应用亟需一组…

【算法题解】30. 全排列的递归解法

这是一道 中等难度 的题 https://leetcode.cn/problems/permutations/ 题目 给定一个不含重复数字的数组 n u m s nums nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1…

景点解说二维码怎么做?一键教你轻松生成二维码

现在的各种景区为了节省人工都会将景点的详细讲解做成二维码。通过手机扫码就能自助导览。那么,大家知道这种景区讲解二维码是怎么制作的吗? 一、什么工具能制作二维码图片? 机智熊二维码生成器(https://www.jzx.com/)…

什么是高性能计算实习生?做高性能计算有前景吗?

随着大模型和算力时代的大火,高性能计算实习的岗位越来越多了,各个大厂都在码人,百度、小米、字节、华为等等,也有很多网友晒出了面试一众知名芯片企业的面经和笔试题。 但是依然有很多朋友不清楚什么是高性能计算实习生&#xf…

搜索推荐系统[10]项目实战系列Z1:手把手教学(商品搜索系统、学术文献检索)语义检索系统搭建、召回排序模型详解。

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

每日一练 | 网络工程师软考真题 Day12

阅读以下说明,答复以下【问题1】至【问题3】 【说明】 某单位有1个总部和6个分部,各个部门都有自己的局域网。该单位申请了6个C类IP地址202.115.10.0/24~202.115.15.0/24,其中总部与分部4共用一个C类地址。现方案将这些部门用路由器互联&…