热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手游自动化测试框架实现原理

手游自动化测试框架需要几个模块:脚本模块:需要对常见的操作进行API封装,脚本一般选择常见的javascript,python,lua等&

手游自动化测试框架需要几个模块:


  1. 脚本模块:需要对常见的操作进行API封装,脚本一般选择常见的Javascript,python,lua等,这个封装主要针对APP上的函数进行封装,以降低开发难度。
    针对有手游,在函数封装方面,主要是图像识别可视化、坐标色图识别等技术的实现。例如airtest针对图像识别做了图形化设计,开维控制精灵(Ctrl.js)也实现了这部分功能。

  2. IDE调试模块:主要是实现IDE编程环境和调试模块,可以例用第三方,例如vscode,idea,也可以自主实现。例如auto.js利用的是vscode, Ctrl.js是自主研发IDE环境。
    调试模块主要实现PC机IDE代码和APP上脚本的实时调试,方便用户单步查错。

  3. 通信模块:实现PC机到APP中的数据交换。例如脚本代码同步、云控定时任务等。

  4. 机器人流程自动化RPA模块:主要实现无代码功能,支持用户直接录制操作手游动作,达到无代码编程的效果。开维控制精灵可以自动生成Ctrl.js代码,极大的降低了手游测试难度。

  5. 远控模块:支持对多台手机远程实时监控,远程执行脚本等任务策略下放。

  6. 其他模块:打包策略、脚本分享策略等等。

下面以一个实例,大体介绍框架核心模块功能:


  1. 脚本模块
    如图所示,在Javascript基础上封装的API函数:
    打开APP的函数app.launchApp();
    图像识别点击可视化函数imagev.click();
    这些函数都是对APP函数的封装,本实例中是对安卓JAVA功能函数的封装。

在这里插入图片描述


  1. IDE调试模块
    代码部分是在PC中的浏览器IDE环境下编写的,可以实时同步到手机APP中,并且支持断点、单步执行。通信模块负责代码同步等机制。

在这里插入图片描述
实例代码如下:

//--------------------------------------------------------------------------------------------------
// ctrl.js 视频教程:https://www.bilibili.com/video/BV1B44y1P7tC/
// ctrl.js 开发环境:https://ctrljs.ikaiwei.com
// ctrl.js 开发文档:https://ctrljs.ikaiwei.com/ctrljsapi
// ctrl.js 资源总汇:https://ikaiwei.com/download/ctrljs/res.html
// ctrl.js 资源下载:https://pan.baidu.com/s/1RiqN3M_Nqbtd3c-o_QrzLg 提取码:kw16
// ctrl.js 手机app(开维控制精灵)华为下载:https://appstore.huawei.com/app/C100728387
// ctrl.js 后台保活:禁止休眠;开悬浮框;关电池优化https://ctrljs.ikaiwei.com/ctrljsapi/baohuo.html
//--------------------------------------------------------------------------------------------------// 脚本功能:手游自动化测试基础第一课 测试方法及流程
// 运行环境:无需root权限;华为手机,安卓9.0以上版本;Ctrl.js V8.6
// 注意事项:1.手游版本不同则需要修改代码//申请权限
init();
autoShotScreen();
//横坐标数组
var xArr = [367,795,1232];
//纵坐标数组
var yArr = [1663,1248,848];//打开游戏
app.launchApp("形状链接");
sleep(5000);//点击开始
imagev.click("data:image/png;base64,iVBORw0KGgo....AAAANSUhEUgAgg==",602,960);
sleep(2000);
//选择难度
imagev.click("data:image/png;base64,iVBORlFTkSuQ................mCC",602,960);
sleep(2000);
//选择类型
imagev.click("data:image/png;base64,iVBORw0KGgoAmzT.......FTkSuQmCC",602,960);
sleep(2000);
//选择关卡
imagev.click("data:image/png;base64,iVBORw0KGgoAAA............ggg==",602,960);
sleep(2000);//调用脚本开始游戏
play();
//游戏脚本
function play() {toast("游戏开始");sleep(2000);for(var i&#61;0;i<xArr.length;i&#43;&#43;){cs.mouseclick(xArr[i],yArr[0]); //点击最底层图形sleep(100);for(var j&#61;0;j<xArr.length;j&#43;&#43;){cs.mouseclick(xArr[j],yArr[1]); //点击中间一层图形sleep(100);for(var k&#61;0;k<xArr.length;k&#43;&#43;){cs.mouseclick(xArr[k],yArr[2]); //点击最上层层图形sleep(100);}}}sleep(500);toast("游戏结束");sleep(500);//点击下一关imagev.click("data:image/png;base64,iVBORw0KGgoA....RU5ErkJggg&#61;&#61;",602,960);//自动游戏play();
}

测试视频&#xff1a;
https://www.bilibili.com/video/BV1B44y1P7tC/

源码、手游apk等资源下载链接&#xff1a;
链接&#xff1a;https://pan.baidu.com/s/1RiqN3M_Nqbtd3c-o_QrzLg 提取码&#xff1a;kw16


推荐阅读
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 在工作了一年多后,我对现在的工作感到厌倦,没有激情,于是决定转行做程序猿。我在学校开了一个某宝店,通过自己摸索和努力,每个月挣够了零花钱和伙食费。我决定往互联网方向靠,不喜欢面对面和人沟通,而虚拟世界中的开发工作让我感到兴奋。我开始学习Java,感到困惑和怀疑自己的智商,但一篇鸡汤文激发了我学习Python的兴趣,我感到智商找回来了。我相信没有梦想的人和咸鱼没有什么区别。 ... [详细]
  • 技术分享:如何在没有公钥的情况下实现JWT密钥滥用
      ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 马尔可夫决策过程Markov Decision Process,MDPKintoki
    Originalurl:http:www.tuicool.comarticlesb6BjAva1.马尔可夫模型的几类子模型我想大家一定听说过马尔科夫链(MarkovChain)& ... [详细]
  • 从C#Byte数组加载图像,并使用AngularJS将图像放在html标记中我正在使用ByteArrayforms的Image,因为我正在使用以下C#方法转换字节数组publicH ... [详细]
author-avatar
夏y儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有