etest 高级变量支持 文件上传用例

各位伙伴,好久不见,今天我们带来了新的版本迭代,eTest 上线,得到的好多测试小伙伴的喜欢,再次感谢各位的支持,同时我们也收到的很多功能上的反馈,反馈最多的一个问题就是怎么支持录制上传文件,这个测试场景可能也是很多小伙伴的使用eTest 最大的困扰吧

小伙伴的反馈我们也会想尽办法,解决问题,在经过一系列的技术调研,今天我们发布了版本更新,本次更新带来了两个重大功能,一个是大家心心念念的文件上传功能,另外一个支持mock ,支持通过mock 数据,针对特殊场景的自动化测试

今天我们一起先来学习第一个功能文件上传

快速上手

文件上传这个场景比较特别,我们无法使用脚本录制,涉及到对本地文件的访问,我们可以通过修改测试脚本文件解决这个问题

首先我们要熟悉一下上传对应的字段 测试用例中有些测试场景需要支持文件上传,针对这个测试用例,可能需要开发者code代码

json 复制代码
{
	"xpath": "//*[@id=\"page-content\"]/div/div/div[1]/div/div[1]/div[1]/div/div[1]/input",
   "filePath": "/Users/xxx/Desktop/desktop/myproject/load.png",
   "type": "upload",
   "iframe": "",
   "selector": "document",
   "url": "https://www.xiaomiyoupin.com/",
}

关键 key

key 描述 是否必填
url 当前打开的 URL 地址信息 Y
filePath 上传文件路径地址,支持绝对路径,或者默认桌面文件 Y
type 获取当前操作的 dom 操作类型 upload Y
xpath 获取当前操作的 dom 的唯一地址 Y
selector 获取当前操作的 dom 的路径信息 N
iframe 当前网页是否嵌有 iframe 地址 N

获取xpath

怎么获取xpath 路径,首先打开浏览器,输入页面,按f12 或者 鼠标右键选择检查 打开开发者模式

选择elements 然后选择点击作左边的鼠标icon

点击选中上传按钮信息,获取对应的上传input元素

然后选择elements对应的dom元素,然后鼠标右键菜单选择copy 选择 copy xpath

注意:获取的xpath 路径信息必须是input 结尾的文件上传控件,不然上传失败,并且对获取的xpath路径信息有"需要转译

json 复制代码
//*[@id="page-content"]/div/div/div[1]/div/div[1]/div[1]/div/div[1]/input

转换成下列方式

json 复制代码
"xpath": "//*[@id=\"page-content\"]/div/div/div[1]/div/div[1]/div[1]/div/div[1]/input",

文件路径

文件路径支持取本地绝对路径,如果只是一个文件名,则会默认桌面文件查找

json 复制代码
 "filePath": "/Users/xxx/Desktop/desktop/myproject/image.jpg",

//或者
 
"filePath": "image.jpg"

为了方便入手,我们以element-plus为例,做了一个测试demo ,大家可以复制以下的信息,尝试演示,需要注意,必须保证你的桌面有一张image.jpg 的图片, 可以本地新建一个json文件,然后把下面的代码保存到json 文件中,上传到eTest工具中运行

json 复制代码
[
	{
		"active": true,
		"audible": false,
		"autoDiscardable": true,
		"discarded": false,
		"favIconUrl": "https://element-plus.org/images/element-plus-logo-small.svg",
		"groupId": -1,
		"height": 759,
		"highlighted": true,
		"id": 84058496,
		"incognito": false,
		"index": 15,
		"lastAccessed": 1709813379812.512,
		"mutedInfo": { "muted": false },
		"pinned": false,
		"selected": true,
		"status": "loading",
		"title": "Upload 上传 | Element Plus",
		"url": "https://element-plus.org/zh-CN/component/upload.html",
		"width": 1920,
		"windowId": 84054912,
		"action": "start",
		"cookies": [],
		"indexNum": 0,
		"date": 1709813400418,
		"localStorage": {
		},
		"sessionStorage": {},
		"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
		"isMobile": false,
		"hasTouch": false,
		"deviceScaleFactor": 1,
		"type": "start"
	},
	{
		"xpath": "//html",
		"iframe": "",
		"selector": "document",
		"scrollTop": 168,
		"scrollLeft": 0,
		"type": "scrollWin",
		"url": "https://element-plus.org/zh-CN/component/upload.html",
		"indexNum": 1,
		"date": 1709813414914
	},
	{
		"xpath": "//*[@id=\"page-content\"]/div/div/div[1]/div/div[1]/div[1]/div/div[1]/input",
		"filePath": "image.jpg",
		"type": "upload",
		"iframe": "",
		"selector": "#page-content > div > div > div.doc-content > div > div:nth-child(5) > div.example-showcase > div > div.el-upload.el-upload--text > input",
		"url": "https://element-plus.org/zh-CN/component/upload.html"
	},
]

欢迎大家去体验一下探索的乐趣👉 乐趣链接eTest,也欢迎大家给个star,⭐️⭐️⭐️有想法可以留言,一定在第一时间回复欢迎骚扰

相关推荐
刘发财6 小时前
前端如何生成10000页PDF文件?
前端·javascript·开源
Erishen7 小时前
Lume C11编译器内部架构:从树形解释器到双LLVM后端的设计之旅
架构·开源·编译器
冬奇Lab7 小时前
LLM 驱动的自动化测试系列(10):自愈定位——当启发式打分撞上语义理解的天花板
人工智能·测试
高晶7 小时前
Android 新手实战:从零搭建 WebRTC 在线直播系统
android·程序员
冬奇Lab7 小时前
一天一个开源项目(第234篇):CC Switch —— 一个 App 管理十款 AI 编程工具的 Provider、MCP、Skills 和 Prompts
人工智能·开源·claude
小蠢驴打代码7 小时前
给 Codex Plan 模式加一本决策账本:问过什么、选了什么,都进仓库
开源·openai·ai编程
寒狼GPT11 小时前
Codex 5小时额度是固定重置还是滚动恢复?为什么每个人Reset时间不一样
chatgpt·程序员·ai编程
newerp12 小时前
GC Pacer 调优算法:GOGC、GOMEMLIMIT 与容器 OOM 防御
后端·程序员·go
程序员老赵12 小时前
Docker 部署 Portainer CE:轻松搭建容器管理平台
docker·容器·开源
newerp12 小时前
逃逸分析、栈分配与 sync.Pool 对象池
后端·程序员·go