博客
关于我
Monkey学习
阅读量:794 次
发布时间:2023-02-09

本文共 1109 字,大约阅读时间需要 3 分钟。

Monkey是一个工程,生成伟随机事件流(在一段时间内完全不重复的事件流),由种子生成。可以模拟用户,点击,触屏等。最好用来做压力测试。无法做功能测试。

adb shell monkey -p -v -s -throttle 延时 --pct-touch 某个事件百分比 --pct-trackball 轨迹球可以解决解锁是圆环的(这个轨迹球用monkeyrunner更合适) --pct-syskeys 有80+系统事件,这个参数会给一个值,如果不想进行交互,这项变成0即可。

分析Monkey源码:

-v -v -v 表示进入一级目录(的Activity) 二级目录(的Activity) 三级目录(的Activity) 找到主入口Activity

MonkeyActivityEvent类:负责进入apk的主界面。工作流程:首先生成Intent事件,Intent.ACTION_MAIN会告诉程序这个动作在主Activity里。

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

这两句相当于“洗衣服”,ACTION_MAIN要在CATEGORY_lAUNCHER时进去。

intent.setcomponent(mApp);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 设置Intent启动模式

Monkey如何发送键盘啊,触屏啊一系列事件,或者滑动啊,drag等?这和Monkeyrunner很相像,首先要定义超类MonkeyEvent.java,里面有很多抽象方法。Monkeyrunner是Monkey的改进版。所有的xxEvent都是实现了方法。比如说调用键盘事件,首先要传一个事件,事件默认的就是-1,表示什么都没有:

private KeyEvent getEvent(){

  if (mDeviced < 0){

    return new KeyEvent(mAction,mKeyCode);}

}

其中mAction表示内定的事件,默认是-1;定义了很多常量,比如home键是4 ,等等;mKeyCode表示按下去或者抬起来;

MonkeyMotionEvent.java 对应的是开发文档中的 --pct-Montion 这里面很多都是实现的隐藏性接口,

 

init进程启动 - 启动zygote

 

 

转载于:https://www.cnblogs.com/ianthe/p/3699253.html

你可能感兴趣的文章
MFC模态对话框和非模态对话框
查看>>
mha高可用
查看>>
Miaoo朋友圈程序全完整版源码
查看>>
Microsoft Security Updates API 使用教程
查看>>
Milesight VPN server.js 任意文件读取漏洞(CVE-2023-23907)
查看>>
MyBatis学习总结(6)——调用存储过程
查看>>
Mock.js 的语法规范学习
查看>>
mockcpp & testngpp在2010.7~11月的改进
查看>>
Mock在接口测试中的实际应用
查看>>
Mock模拟测试实战
查看>>
Modbus RTU串口通信实验
查看>>
Modbus RTU和Modbus TCP之间的区别
查看>>
Model-Based Reinforcement Learning(基于模型的强化学习)详解-ChatGPT4o作答
查看>>
Model-Free Reinforcement Learning(无模型强化学习)详解-ChatGPT4o作答
查看>>
modprobe
查看>>
module 'requests' has no attribute 'get' python
查看>>
module ‘@babel/runtime/helpers/interopRequireDefault.js‘ is not defined报错解决方法
查看>>
MogoTemplate基本入门(Mongodb数据库基本增删改查)
查看>>
Mojarra JSF ViewState 反序列化漏洞复现
查看>>
My new English
查看>>