
MonkeyRunner从入门到原理
将自己从零基础接触MonkeyRunner到通过源代码研读学习MonkeyRunner整套框架的过程记录下来分享给大家
AI产品狙击手
主要会分享人工智能、大语言模型、Diffusion Model等AI技术和产品,请关注我!
个人博客:www.techgogogo.com
展开
-
Android自动化测试框架新书:<<MonnkeyRunner实现原理剖析>>交流
大家觉得编写一本描述MonkeyRunner原理分析的书籍如何?估计大概10万字左右。内容大概分布如下:Monkey实现原理: 去描述运行在目标安卓机器的monkey是如何运行并处理MonkeyRunner发送过来的事件请求并把事件注入到系统的Monkey命令处理源码情景分析:去分析关键命令事件如touch,tap等的实现原理AndroidDebugMonitor(adb)运行原理:原创 2014-12-27 16:46:52 · 4346 阅读 · 14 评论 -
MonkeyRunner源码分析之工作原理图
花了点事件整理了下MonkeyRunner的工作原理图:原创 2014-11-29 14:25:11 · 3213 阅读 · 1 评论 -
移植MonkeyRunner的图片对比和获取子图功能的实现-UiAutomator/Robotium篇
根据前一篇文章《移植MonkeyRunner的图片对比和获取子图功能的实现-Appium篇》所述,因为Appium和MonkeyRunner有一个共同点--代码控制流程都是在客户端实现的。所以要把MonkeyRunner在PC端实现的图片比对和获取子图功能移植到同样是在PC端运行的Appium是很容易的事情,但是对于在服务器端运行的Robotium和UiAutomator就是另外一回事了。因为原创 2014-11-12 09:58:34 · 5876 阅读 · 4 评论 -
移植MonkeyRunner的图片对比和获取子图功能的实现-Appium篇
如果你的目标测试app有很多imageview组成的话,这个时候monkeyrunner的截图比较功能就体现出来了。而其他几个流行的框架如Robotium,UIAutomator以及Appium都提供了截图,但少了两个功能:获取子图图片比较既然Google开发的MonkeyRunner能盛行这么久,且它体功能的结果验证功能只有截屏比较,那么必然有它的道理,有它存在的价值,所以我们很有必原创 2014-11-06 13:28:19 · 6941 阅读 · 4 评论 -
monkey源码分析之事件注入方法变化
在上一篇文章《Monkey源码分析之事件注入》中,我们看到了monkey在注入事件的时候用到了《Monkey源码分析番外篇之Android注入事件的三种方法比较》中的第一种方法,通过Internal API的WindowManager的injectKeyEvent之类的方法注入事件。这种方法在android api level 16也就是android4.1.2之后已经发生了变化:原创 2014-10-26 09:40:12 · 3368 阅读 · 0 评论 -
Monkey源码分析之事件注入
本系列的上一篇文章《Monkey源码分析之事件源》中我们描述了monkey是怎么从事件源取得命令,然后将命令转换成事件放到事件队列里面的,但是到现在位置我们还没有了解monkey里面的事件是怎么一回事,本篇文章就以这个问题作为切入点,尝试去搞清楚monkey的event架构是怎么样的,然后为什么是这样架构的,以及它又是怎么注入事件来触发点击等动作的。在看这篇文章之前,希望大家最好先去看下另外几原创 2014-10-25 09:24:16 · 4852 阅读 · 2 评论 -
Monkey源码分析番外篇之Android注入事件的三种方法比较
原文:http://www.pocketmagic.net/2012/04/injecting-events-programatically-on-android/#.VEoIoIuUcaV往下分析monkey事件注入源码之前先了解下在android系统下事件注入的方式,翻译一篇国外文章如下。Method 1: Using internal APIs方法1:使用内部AP翻译 2014-10-24 16:54:52 · 8068 阅读 · 1 评论 -
Monkey源码分析番外篇之WindowManager注入事件如何跳出进程间安全限制
在分析monkey源码的时候有些背景知识没有搞清楚,比如在看到monkey是使用windowmanager的injectKeyEvent方法注入事件的时候,心里就打了个疙瘩,这种方式不是只能在当前应用中注入事件吗?Google了下发现了国外一个大牛有留下蛛丝马迹描述这个问题,特意摘录下来并做相应部分的翻译,其他部分大家喜欢就看下,我就不翻译了。How it worksBehin翻译 2014-10-24 15:23:48 · 4022 阅读 · 3 评论 -
Monkey源码分析之事件源
上一篇文章《Monkey源码分析之运行流程》给出了monkey运行的整个流程,让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点。这里先把整个monkey类的结构图给出来供大家参考,该图源自网上(我自己的backbook pro上没有安装OmniGraffle工具,55美金,不舍得,所以直接贴网上的)图中有几点需要注意下的:MonkeyEve原创 2014-10-24 08:56:14 · 4142 阅读 · 0 评论 -
Monkey源码分析之运行流程
在《MonkeyRunner源码分析之与Android设备通讯方式》中,我们谈及到MonkeyRunner控制目标android设备有多种方法,其中之一就是在目标机器启动一个monkey服务来监听指定的一个端口,然后monkeyrunner再连接上这个端口来发送命令,驱动monkey去完成相应的工作。当时我们只分析了monkeyrunner这个客户端的代码是怎么实现这一点的,但没有谈monke原创 2014-10-23 13:06:11 · 5131 阅读 · 2 评论 -
MonkeyRunner源码分析之启动
在工作中因为要追求完成目标的效率,所以更多是强调实战,注重招式,关注怎么去用各种框架来实现目的。但是如果一味只是注重招式,缺少对原理这个内功的了解,相信自己很难对各种框架有更深入的理解。从几个月前开始接触ios和android的自动化测试,原来是本着仅仅为了提高测试团队工作效率的心态先行作浅尝即止式的研究,然后交给测试团队去边实现边自己研究,最后因为各种原因果然是浅尝然后就止步了,而自己最终也原创 2014-10-21 13:50:35 · 3922 阅读 · 2 评论 -
MonkeyRunner源码分析之与Android设备通讯方式
如前文《谁动了我的截图?--Monkeyrunner takeSnapshot方法源码跟踪分析》所述,本文主要会尝试描述android的自动化测试框架MonkeyRunner究竟是如何和目标设备进行通信的。在上一篇文章中我们其实已经描述了其中一个方法,就是通过adb协议发送adb服务器请求的方式驱动android设备的adbd守护进程去获取FrameBuffer的数据生成屏幕截图。那么Mo原创 2014-10-20 08:42:48 · 5222 阅读 · 2 评论 -
MonkeyRunner源码分析之-谁动了我的截图?
本文章的目的是通过分析monkeyrunner是如何实现截屏来作为一个例子尝试投石问路为下一篇文章做准备,往下一篇文章本人有意分析下monkeyrunner究竟是如何和目标测试机器通信的,所以最好的办法本人认为是先跟踪一个调用示例从高层到底层进行分析,本人以前分析操作系统源代码的时候就是先从用户层的write这个api入手,然后一路打通到vfs文件系统层,到设备驱动层的,其效果比单纯的理论描述更容原创 2014-10-19 15:11:15 · 4836 阅读 · 0 评论 -
Android KitCat 4.4.2 ADB 官方所支持的所有Services格式翻译
在之前的文章中有转帖网上同行制作的ADB协议表格adb概览及协议参考>>,但不够详尽,所以这里自己另外基于Android 4.4.2的技术文档重新做一次翻译。HOST SERVICES:主机服务:host:versionAsk the ADB server for its internal version number. As a special exception, th翻译 2014-12-04 13:34:08 · 3064 阅读 · 0 评论 -
adb概览及协议参考
原文:https://github.com/android/platform_system_core/blob/master/adb/OVERVIEW.TXT)Implementation notes regarding ADB.ADB实现注解1. General Overview:1概要The Android Debug Bridge (ADB) is used to:A翻译 2014-10-19 10:37:23 · 6716 阅读 · 0 评论 -
EasyMonkeyDevice vs MonkeyDevice&HierarchyViewer API Mapping Matrix
1. 前言本来这次文章的title是写成和前几篇类似的《EasyMonkeyDevice API实践全记录》,内容也打算把每个API的实践和建议给记录下来,但后来想了下觉得这样子并不是最好的方法,鉴于EasyMonkeyDevice其实就是在前几章描述的MonkeyDevice和HierarchyViewer的基础上加了一层Wrapper,把原来的通过接受坐标点或者ViewNode来操作控件的原创 2014-10-11 13:08:01 · 3998 阅读 · 0 评论 -
MonkeyImage API 实践全记录
1. 背景鉴于网上使用MonkeyImage的实例除了方法sameAs外很难找到,所以本人把实践各个API的过程记录下来然自己有更感性的认识,也为往后的工作打下更好的基础。同时也和上一篇文章《MonkeyDevcie API 实践全记录》起到相互呼应的作用。因为并没有MonkeyRunner的项目背景,所以这里更多的是描述各个API是怎么一回事,而不是描述在什么场景下需要用到。也原创 2014-10-09 16:49:45 · 2714 阅读 · 0 评论 -
MonkeyDevcie API 实践全记录
1. 背景使用SDK自带的NotePad应用作为实践目标应用,目的是对MonkeyDevice拥有的成员方法做一个初步的了解。以下是官方列出的方法的Overview。Return TypeMethodsCommentvoidbroadcastIntent (string uri, string action,原创 2014-10-09 10:27:49 · 2924 阅读 · 0 评论 -
MonkenRunner通过HierarchyViewer定位控件的方法和建议(Appium/UIAutomator/Robotium姊妹篇)
1. 背景在使用MonkeyRunner的时候我们经常会用到Chimchat下面的HierarchyViewer模块来获取目标控件的一些信息来辅助我们测试,但在MonkeyRunner的官网上是没有看到相应的API的描述的,上面只有以下三个类的API引用信息(http://developer.android.com/tools/help/MonkeyDevice.html)Monk原创 2014-10-07 09:28:05 · 8753 阅读 · 3 评论 -
MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)
网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置MonkeyRunner,做了挺好的一个描述,但经过我的试验在我的环境上碰到了Jython解析器出错的问题,且该文章缺少Pydev安装的步骤,所以这里按照本人的情况从新撰文描述如何在Eclipse上把MonkeyRunner的开发环境搭建起来。1.环境首先需要先描述下本人配置的环境,因为不确定其他环境下配置是否会原创 2014-10-05 14:47:20 · 7962 阅读 · 6 评论 -
MonkeyRunner创建一个Note的实例
之前的系列给出了Appium,Robotium,Instrumentation和UIAutomator创建一个Note实例的例子:《Appium创建一个Note的实例》《Robotium创建一个Note的实例》《UIAutomator创建一个Note的实例》《SDK Instrumentation创建一个Note的实例》那么用MonkeyRunner又是如何实现这些功能原创 2014-09-27 09:54:44 · 2443 阅读 · 0 评论