
MonkeyRunner
AI产品狙击手
主要会分享人工智能、大语言模型、Diffusion Model等AI技术和产品,请关注我!
个人博客:www.techgogogo.com
展开
-
第4章3节《MonkeyRunner源码剖析》ADB协议及服务: ADB协议概览SYNC.TXT翻译参考(原创)
本文档的目的是去文档化一个客户端请求ADB服务器往adbd守护进程发送文件相关的请求。请查看OVERVIEW.TXT文档去查看(ADB服务器和adbd守护进程)相关信息,查看SERVICES.TXT去学习其他更多的可用请求。翻译 2015-03-07 19:26:20 · 1774 阅读 · 0 评论 -
第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介(原创)
在MonkeyRunner的框架中,Monkey是作为一个服务来接受来自MonkeyRunner客户端发送过来的命令,然后针对每条命令请求进行相应的处理,所以它并不是作为一个随机压力测试的工具来运作原创 2015-03-07 21:42:34 · 2155 阅读 · 0 评论 -
第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例(原创)
上一节我们学习了如何通过MonkeyRunner这个类的静态方法waitForConnection来把后台和设备建立好连接,且看到了在建立连接成功后,该方法会返回来一个MonkeyDevice的实例对象。那么这一节我们就通过编写一些脚本代码示例来了解学习下MonkeyDevice这个类的使用方法原创 2015-03-07 17:36:02 · 2531 阅读 · 0 评论 -
第3章1节《MonkeyRunner源码剖析》脚本编写示例: MonkeyRunner API使用示例(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。MonkeyRunner这个类可以说是编写monkeyrunner脚本的入口,因为这个类有一个很重要的方法watForConnection,它原创 2015-03-07 17:00:17 · 2200 阅读 · 0 评论 -
第2章2节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NotesList简介(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。NotePad窗口Activity之NotesList简介上一节我们简要描述了测试对象NotePad的主要功能模块,那么这一节开始我们就会对每原创 2015-03-06 00:00:44 · 1947 阅读 · 0 评论 -
第1章3节《MonkeyRunner源码剖析》概述:架构(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。原理架构MonkeyRunner使用起来非常的简单,只需要导入以下几个类基本上就能满足测试脚本编写的需求,比如:monkeyrunner.j原创 2015-03-05 23:22:36 · 3422 阅读 · 0 评论 -
第4章4节《MonkeyRunner源码剖析》ADB协议及服务: ADB命令行客户端使用简介(原创)
从前面几个小节我们知道ADB命令行客户端是存在与主机端的一个命令,用户可以使用该命令来发送服务请求到ADB服务器,ADB服务器再判断该服务请求是主机服务请求还是本地服务请求来决定是否应该将请求传送给远程adbd守护进程进行执行。原创 2015-03-07 21:19:31 · 1957 阅读 · 0 评论 -
第4章2节《MonkeyRunner源码剖析》ADB协议及服务: ADB服务SERVICES.TXT翻译参考(原创)
ADB服务器端在接受到ADB客户端发送过来的命令后会进行相应的处理,如果是主机服务就在ADB服务器内部进行处理,如果是本地服务就会发送给Android目标机器端的adbd守护进程进行处理。因为ADB相关的源代码不在我们源码分析的范围之内,所以我们很有必要把官方提供的ADB服务器支持的所有服务在这里描述下。虽然本人对自己的英语水平相当有信心,但总担心有词不达意的时候,所以翻译的过程中把英文也保留了下来以供大家参考。翻译 2015-03-07 19:06:47 · 1776 阅读 · 0 评论 -
《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第一节 - 关键类作用及关系
MonkeyRunner框架暴露了几个类的大量的API出去给用户编写脚本时候使用,其中最主要的三个就是: MonkeyDevice目标设备操作类,HierarchyViewer窗口界面对象操作类以及MonkeyImage这个截屏处理类。了解了这3个类以及跟他们相关的关键类的实现原理,基本上可以说MonkeyRunner框架的实现原理就算搞清楚了。因为一个UI自动化测试框架的关键功能无非就是这三样: 操作目标设备,如注射点击事件等;获取控件信息,如获取需要点击的控件的中心坐标等;结果比较。其实这3个类也就是我原创 2015-01-24 12:48:30 · 1317 阅读 · 0 评论 -
《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第七节 - 文件图片及子图处理类BufferedImageChimpImage
上一节分析了ChimpImageBase的第一个子类AdbChimpImage,本节将会分析的是第二个子类BufferedImageChimpImage。原创 2015-01-25 11:06:16 · 1326 阅读 · 0 评论 -
《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第六节 - 截屏图片处理类AdbChimpImage
通过上一小节的分析,我们学习了ChimpImageBase这个实现了IChimpImage接口的抽象类,并知道它有两个子类AdbChimpImage和BufferedImageChimpImage分别代表通过往ADB服务器发送framebuffer服务请求获得的截屏图片和通过加载文件或截取子图获得的图片。原创 2015-01-25 11:03:23 · 1409 阅读 · 0 评论 -
《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第二节 - ADB截屏服务
要搞清楚MonkeyRunner的截图, 我们必须先了解下图片的一些背景知识。 首先,广义来说,图片分为位图和矢量图。 位图是通过像素堆砌成的;而矢量图是通过算法计算出来的,所以它跟分辨率没有关系。因为MonkeyRunner用到的是位图,所以我们这里更多的是关注位图的相关知识。原创 2015-01-24 14:05:56 · 1408 阅读 · 0 评论 -
第5章7节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles(原创)
Monkey启动之后需要在整个MonkeyRunner的测试生命周期中提供服务,也就是说,一旦我们调用monkeyrunner命令来执行指定的测试脚本的时候,只要monkeyrunner还没有退出,那么Monkey就会一直提供服务,一直监听获取并处理从MonkeyRunner测试脚本发送过来的相应的命令。那么要实现这种一直监听的处理我们很自然就想到需要用一个循环来处理了。其实Monkey也不例外,我们往下会分析它是怎原创 2015-03-07 22:30:40 · 2279 阅读 · 0 评论 -
《MonkeyRunner源码剖析》书籍手稿章节大纲
因为整个手稿内容比较多,有十多万字,需要从iBooks Author上面一个个整理出来分享,所以需要点时间才能全部完成。下面先给出整本书的大纲原创 2015-03-08 10:57:00 · 2672 阅读 · 1 评论 -
第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用(原创)
上一节我们描述了monkey的命令处理入口函数run是如何调用optionProcess方法来解析命令行参数的。启动参数主要时去指导Monkey时怎么运行起来的,但Monkey作为MonkeyRunner框架的一部分,更重要的是如何将从MonkeyRunner测试脚本出发的命令转化成事件来注入到系统中以进行测试自动化。如前面所说,run方法除了对启动参数进行解析之外还做了很多其他的事情,比如这一小节需要分析的去建立对原创 2015-03-07 22:21:19 · 1829 阅读 · 0 评论 -
第4章1节《MonkeyRunner源码剖析》ADB协议及服务: ADB协议概览OVERVIEW.TXT翻译参考(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。关于ADB的实现记录。I. 概览安卓调试桥(ADB)是用来: 跟踪管理所有连接上或者运行在开发主机上的安卓设备或者模拟器实例。其实现了各种控制翻译 2015-03-07 18:18:56 · 2964 阅读 · 0 评论 -
第2章4节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之菜单简介(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。NotePad窗口Activity之菜单简介这里我们总共用到两种类型的菜单,一种叫做Context Menu,就是上下文菜单;一种叫做Opti原创 2015-03-06 00:18:35 · 1544 阅读 · 0 评论 -
第1章2节《MonkeyRunner源码剖析》概述:边界(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。边界怎么样才算分析清楚一个事物的原理是什么呢?就以前面提到的《LINUX内核源代码情景分析》为例子,分析到什么程度算是把Linux内核给分析清原创 2015-03-05 23:03:18 · 1877 阅读 · 0 评论 -
第1章1节《MonkeyRunner源码剖析》概述:前言(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。前言相信大家做过安卓移动平台UI自动化开发的必然会用过,至少听过MonkeyRunner这个名字。MonkeyRunner是一个针对安卓平台的原创 2015-03-05 22:47:30 · 2165 阅读 · 0 评论 -
第5章6节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 初始化事件源(原创)
事件源代表要注入系统的命令事件数据是从哪里过来的。这一小节我们不会对事件源的实现进行深入的分析,因为下一章会做这个事情。这里大家对事件源有个基本概念就足够了。原创 2015-03-07 22:26:11 · 1724 阅读 · 0 评论 -
第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例(原创)
在上一节的第一个“增加日记”的示例中,我们并没有看到日记是否真的增加成功了,也就是说当时并没有进行结果比较。其实在MonkeyRunner框架中,测试结果的比较往往都是通过截屏比对来完成的。而截屏比对相关的方法主要是由MonkeyImage这个类来实现的,但截屏这个动作确是由MonkeyDevice提供的takeSnapshot这个方法来达成的。所以这一节我们主要就是去熟悉截屏比对相关的测试代码编写的基础知识。原创 2015-03-07 18:01:24 · 1655 阅读 · 0 评论 -
第2章3节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NoteEditor简介(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。我们在增加和编辑一个日记的时候会从NotesList这个Activity进入到NoteEditor这个Activity。增加和编辑的时候的控件原创 2015-03-06 00:11:36 · 1667 阅读 · 0 评论 -
第2章1节《MonkeyRunner源码剖析》了解你的测试对象: NotePad应用简介(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。本书脚本相关的示例常会用到Android SDK自带的NotePad这个应用,所以这里很有必要去描述下这个应用。其实去熟悉这个应用最好的办法是原创 2015-03-05 23:39:00 · 1696 阅读 · 0 评论 -
第5章3节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动脚本(原创)
本节我们先看下Monkey是怎么启动起来的。在今后分析到MonkeyRunner的原理的时候我们会看到客户端是通过ADB往Android目标测试机器发送一个”monkey -port 12345”的命令来启动Monkey服务的。那么这个命令做了什么事情呢?它其实就是通过调用monkey这个shell脚本来把Monkey服务给启动起来然后监听目标设备上的端口12345,最后MonkeyRunner等其他主机端的应用就能原创 2015-03-07 21:56:35 · 1731 阅读 · 0 评论 -
第5章2节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动流程概览(原创)
每个应用都会有一个入口方法来供操作系统调用执行,Monkey这个应用的入口方法就是在Monkey.java这个类里面的,也就是说Monkey.java就是整个Monkey应用的入口类。原创 2015-03-07 21:51:10 · 1752 阅读 · 0 评论 -
第5章4节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 命令行参数解析(原创)
设置好Monkey的CLASSPATH环境变量以指定”/system/framework /framework/monkey.jar“后,/system/bin/monkey这个shell脚本就会通过app_process命令指定monkey的入口类” “com.android.commands.monkey.Monkey”找到main函数开始运行。在运行之前会有一些初始化的工作需要做,其中很重要的一项就是去把用户提原创 2015-03-07 22:13:59 · 1829 阅读 · 1 评论 -
《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第四节 - 图片通用类BufferedImage
根据前面的分析,ADB的framebuffer服务返回来的截屏数据组成的是裸图RawImage,这个裸图更多是ddmlib专用的,而ddmlib又是给Android开发专用的库。所以总体来说RawImage不存在通用的特性,而因为MonkeyRunner的控制代码是运行在主机端的,更多情况下需要用到Java更通用的图像库才能使事情更简单原创 2015-01-24 14:29:34 · 1355 阅读 · 0 评论 -
《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 概览
原创 2015-01-24 13:42:27 · 1582 阅读 · 0 评论 -
《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第三节 - 裸图RawImage
在今后MonkeyDevice原理分析中我们会学习到,当用户通过编写脚本调用MonkeyDevice的getSnapshot方法来获取当前屏幕截图的时候,最终将会通过AdbHelper的getFrameBuffer方法向ADB服务器发送截屏服务请求”framebuffer:”,ADB服务器在接收到该服务请求后,就会把该本地请求发送给远程目标机器的adbd守护进程进行处理,adbd守护进程原创 2015-01-24 14:16:13 · 1412 阅读 · 0 评论 -
MonkeyRunner源码分析之工作原理图
花了点事件整理了下MonkeyRunner的工作原理图:原创 2014-11-29 14:25:11 · 3213 阅读 · 1 评论 -
Monkey源码分析之事件源
上一篇文章《Monkey源码分析之运行流程》给出了monkey运行的整个流程,让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点。这里先把整个monkey类的结构图给出来供大家参考,该图源自网上(我自己的backbook pro上没有安装OmniGraffle工具,55美金,不舍得,所以直接贴网上的)图中有几点需要注意下的:MonkeyEve原创 2014-10-24 08:56:14 · 4142 阅读 · 0 评论 -
Monkey源码分析之事件注入
本系列的上一篇文章《Monkey源码分析之事件源》中我们描述了monkey是怎么从事件源取得命令,然后将命令转换成事件放到事件队列里面的,但是到现在位置我们还没有了解monkey里面的事件是怎么一回事,本篇文章就以这个问题作为切入点,尝试去搞清楚monkey的event架构是怎么样的,然后为什么是这样架构的,以及它又是怎么注入事件来触发点击等动作的。在看这篇文章之前,希望大家最好先去看下另外几原创 2014-10-25 09:24:16 · 4852 阅读 · 2 评论 -
寻求合作伙伴编写《深入理解 MonkeyRunner》书籍
背景:之前花了一个多月的时间尝试编写一本的书籍,详情看我个人空间公开的第7章内容。我现在编写的已经有大概12万字左右,跟出版商商讨后觉得应该增加一些实战方面的其他内容,这里寻求跟靠谱的人进行合作将其完成。本书的内容大纲如下: 第一部分:MonkeyRunner基础应用 主要讲解它如何使用,让读者能快速上手。 第二部分:MonkeyRunner原理解析 我来负责,主要是原创 2015-02-06 11:17:53 · 4315 阅读 · 4 评论 -
基于Instrumentation Framework的开源项目AndroidMonkey简介
在上一篇文章《MonkeyRunner和Android设备通讯方式源码分析》中本人提到MonkeyRunner跟目标安卓机器交互的其中一种方式是通过在目标机器端开启'monkey -port $port'来跟monkeyrunner建立连接进行交互的,后来打算下载安卓机器端的monkey源代码来分析下monkey是如何处理的,在google中打入关键字“android monkey sourc翻译 2014-10-22 13:11:23 · 2222 阅读 · 0 评论 -
《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第八节 - MonkeyRunner和MonkeyImage图片操作
前面的几个小节我们已经分析了ddmlib和chimpchat库的图片处理相关的类的实现原理了,根据第一节给出来的类关系图,我们还剩下monkeyrunner库相关的类没有进行分析。这个就是本小节需要做的事情。原创 2015-01-25 11:09:29 · 1482 阅读 · 0 评论 -
《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第五节 - 图片处理基类ChimpImageBase
根据本章第一节的描述,ChimpImageBase是处理截屏图片的AdbChimpImage和处理来自文件的或者截取子图获得的图片的BufferedChimpImage的父类。这个类里面实现了图片处理的主要方法,MonkeyImage和MonkeyRunner类主要就是通过调用这些方法来完成用户请求的。原创 2015-01-25 11:00:55 · 1348 阅读 · 0 评论 -
Eclipse上修改Jython代码的Comment颜色
1.问题起因根据上一篇文章《MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)》搭配好Eclipse上面的MonkeyRunner开发环境后,尝试写一段代码来测试下notepad应用,但发觉编辑器了上面的comment都是灰暗的,很难看得清楚,况且因为本博客里面其他框架使用的都是Java,习惯了Java上面的绿色comment,所原创 2014-10-05 15:44:49 · 1859 阅读 · 0 评论 -
Android 之 ServiceManager与服务管理
转载处:http://blog.youkuaiyun.com/xieqibao/article/details/6585143ServiceMananger是android中比较重要的一个进程,它是在init进程启动之后启动,从名字上就可以看出来它是用来管理系统中的service。比如:InputMethodService、ActivityManagerService等。在ServiceManager中有转载 2014-10-24 12:25:09 · 1519 阅读 · 0 评论 -
致网友Wonderfei的一封信(如何选择自动化框架的几点拙见)
MonkeyRunner,Roboitum,UIAutomator和Appium框架的一比较之拙见原创 2014-10-10 09:04:35 · 4676 阅读 · 6 评论 -
Android自动化测试框架新书:<<MonnkeyRunner实现原理剖析>>交流
大家觉得编写一本描述MonkeyRunner原理分析的书籍如何?估计大概10万字左右。内容大概分布如下:Monkey实现原理: 去描述运行在目标安卓机器的monkey是如何运行并处理MonkeyRunner发送过来的事件请求并把事件注入到系统的Monkey命令处理源码情景分析:去分析关键命令事件如touch,tap等的实现原理AndroidDebugMonitor(adb)运行原理:原创 2014-12-27 16:46:52 · 4346 阅读 · 14 评论