介绍
小编给大家分享一下小程序自动化测试的示例分析,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!
背景
近期团队打算做一个小程序自动化测试的工具,期望能够做到业务人员操作一遍小程序后,自动还原之前的操作路径,并且捕获操作过程中发生的异常,以此来判断这次发布是否会影响小程序的基础功能。
<人物> <李>控制小程序跳转到指定页面
李> <李>获取小程序页面数据
李> <李>获取小程序页面元素状态
李> <李>触发小程序元素绑定事件
李> <李>往AppService注入代码片段
李> <李>调用天气对象上任意接口
李> <李>…
李>上面的描述都来自官方文档,建议阅读后面内容之前可以先看看官方文档,当然如果之前用过操纵,也可以快速上手,api基本一致。下面简单介绍下SDK的使用方式。
//,引入sdkconst automator =,要求(& # 39;miniprogram-automator& # 39;)//,启动微信开发者工具automator.launch({//才能,微信开发者工具安装路径下的,cli 工具//才能,Windows下为安装路径下的,cli.bat//才能,MacOS下为安装路径下的,cli cliPath才能:& # 39;路径//cli # 39;,,,//,项目地址,即要运行的小程序的路径 projectPath才能:& # 39;路径//项目# 39; })(async miniProgram =祝辞,{,//miniProgram 为,IDE 启动后的实例 ,,,//,启动小程序里的,index 页面 const 才能;page =, await miniProgram.reLaunch(& # 39;/页面/索引/指数# 39;),,//,等待,500 ms await 才能page.waitFor(500),,//,获取页面元素 const 才能;element =, await 页面。美元(& # 39;.main-btn& # 39;),,//,点击元素 await 才能;element.tap(),,,,//,关闭,IDE await 才能;miniProgram.close () })复制代码
有个地方需要提醒一下:使用SDK之前需要开启开发者工具的服务端口,要不然会启动失败。
<人物> //,暂存原生方法const originPage =, Pageconst originComponent =,组件//,改写,PagePage =, (params),=祝辞,{const 才能;names =,种(params),, for (const name of 名称),{,,,//,进行方法拦截 ,,,if (typeof obj[名字],===,& # 39;函数# 39;),{ ,,,,,params[名字],=,hookMethod(名字,,params[名字],假) ,,,} ,,} originPage才能(params) }//,改写,ComponentComponent =, (params),=祝辞,{if 才能;(params.methods), {,,,,, const {, methods },=, params ,,,,, const names =,种(方法),,,,,,for (const name of 名称),{,,,,,,,//,进行方法拦截 ,,,,,,,if (typeof 方法[名字],===,& # 39;函数# 39;),{ ,,,,,,,,,方法[名字],=,hookMethod(名称,方法[名字],,真的) ,,,,,,,} ,,,,,} ,,} originComponent才能(params) }const hookMethod =,(名称,方法,isComponent),=祝辞,{return 才能;函数(…args), {,,, const (evt),=, args //,取出第一个参数 ,,,//,判断是否为,event 对象 ,,,if (evt ,,, evt.target ,,, evt.type),{,,,,,//,记录用户行为 ,,,},,,,return method.apply (,, args) ,,} }复制代码