热门标签 | 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


推荐阅读
  • 利用Python与Android进行高效移动应用开发
    通过结合Python和Android,可以实现高效的移动应用开发。首先,需要安装Scripting Layer for Android (SL4A),这是一个开源项目,旨在为Android系统提供脚本语言支持。SL4A不仅简化了开发流程,还允许开发者使用Python等高级语言编写脚本,从而提高开发效率和代码可维护性。此外,SL4A还支持多种其他脚本语言,进一步扩展了其应用范围。通过这种方式,开发者可以快速构建功能丰富的移动应用,同时保持较高的灵活性和可扩展性。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 如何在Lua中调用C语言编译的动态链接库
    本文介绍了如何在Lua中调用C语言编译的动态链接库。通过详细步骤和示例代码,帮助开发者理解和掌握这一技术。参考了《Lua编程入门》一书中的相关内容,并结合实际操作经验,提供了更加清晰和实用的指导。此外,还探讨了在不同操作系统下编译和链接Lua的方法,为跨平台开发提供了有价值的参考。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • Android ListView 自定义 CheckBox 实现列表项多选功能详解
    本文详细介绍了在Android开发中如何在ListView的每一行添加CheckBox,以实现列表项的多选功能。用户不仅可以通过点击复选框来选择项目,还可以通过点击列表的任意一行来完成选中操作,提升了用户体验和操作便捷性。同时,文章还探讨了相关的事件处理机制和布局优化技巧,帮助开发者更好地实现这一功能。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
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社区 版权所有