版权声明:本文出自胖喵~的博客,转载必须注明出处。

转载请注明出处:http://www.cnblogs.com/by-dream/p/4861693.html

前言 


  在实际项目进行过程中,频繁的需求变更和突如其来的测试任务,不会留给我们过多的时间去写测试脚本,这个时候如果可以进行录制我的一次操作,然后自动的回放出来,那么就能够节省很多的时间。

  恰好monkeyrunner帮我们提供了可以录制 回放的功能。

  发现一个看源码的网址:http://124.16.141.157/lxr-0101/source/sdk/monkeyrunner/scripts/?v=android-4.0.4

录制


  很简单,四条命令遍可以打开MonkeyRecorder

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder device = mr.waitForConnection()
recorder.start(device)

  可以选择在cmd中打开,也可以将命令写到python脚本中进行打开(其实这就是 Android源代码 /source/sdk/monkeyrunner/scripts/ 目录下的 monkey_recorder.py 脚本的内容)。

cmd中的打开方式

  打开后界面如下图所示:

  介绍一下这个工具的简单用法,MonkeyRecorder主要用来录制测试者操作的整个过程,在打开这个软件之前,你需要保证你的手机设备已经成功连接了电脑。这个界面上显示的内容就是你手机当前屏幕的内容。

  用鼠标点击这个界面,点击的坐标就会被记录下来,这样就算是录制了你的点击事件。我们知道一个相对完整的脚本仅有点击事件是不够的,那么其他的一些事件如何添加的,那就得依靠上面的按钮:

    Wait: 相当于在sleep,在每一步和每一步操作中间有时候需要添加一个等待,以防止点击速度过快有些ui还没跳转成功。

         

       输入数字后,点击确定,在屏幕的右侧,就可以看到 “Wait for 2.00000 seconds” 的字样了

    Press a Button: 相当于MonkeyDevice.press 的命令,用来模拟“home键点击”,“back键按下、抬起” 等事件。

         

    Type Something: 相当于type,输入文本用的。

    Fling: 模拟滑动事件。

    Refresh Display: 刷新一下,同步手机端的屏幕。

    Export Actions: 导出我们刚才操作的动作,右边红框内就是刚才操作的内容。

         

          导出后,在本地生成一个文件,这个文件将来我们就用它来进行回放。导出后的文件内容:

回放


  首先将我们录制的文件(假如文件名为123),拷贝到和monkeyrunner同级目录下。

  然后还需一个脚本,脚本的内容如下:

import sys
from com.android.monkeyrunner import MonkeyRunner CMD_MAP = {
"TOUCH": lambda dev, arg: dev.touch(**arg),
"DRAG": lambda dev, arg: dev.drag(**arg),
"PRESS": lambda dev, arg: dev.press(**arg),
"TYPE": lambda dev, arg: dev.type(**arg),
"WAIT": lambda dev, arg: MonkeyRunner.sleep(**arg)
} #Process a single file for the specified device.
def process_file(fp, device):
for line in fp:
(cmd, rest) = line.split("|")
try:
rest = eval(rest)
except:
print ("unable to parse options")
continue if cmd not in CMD_MAP:
print ("unknown command: " + cmd)
continue CMD_MAP[cmd](device, rest) def main():
file = sys.argv[1]
fp = open(file, "r") device = MonkeyRunner.waitForConnection() process_file(fp, device)
fp.close(); if __name__ == "__main__":
main()

  将该脚本也保存到根目录下,命令为 replay.py。

  然后直接运行在命令行下: monkeyrunner.bat replay.py   即可完成回放。

        

【Android测试】【第十节】MonkeyRunner—— 录制回放的更多相关文章

  1. Python3 Selenium自动化web测试 ==> 第十节 WebDriver高级应用 -- xpath语法

    学习目的: xpath定位是针对常规定位方法中,最有效的定位方式. 场景: 页面元素的定位. 正式步骤: step1:常规属性 示例UI 示例UI相关HTML代码 相关代码示例: #通过id定位 dr ...

  2. Android自动化测试之MonkeyRunner录制和回放脚本

    Android自动化测试之MonkeyRunner录制和回放脚本(十一) 分类: 自动化测试 Android自动化 2013-02-22 10:57 7346人阅读 评论(2) 收藏 举报 andro ...

  3. 【Android测试】【第九节】MonkeyRunner—— 初识

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4836815.html 不得不说两句,过了这么久才再次更新博 ...

  4. 【Android测试】【第十五节】Instrumentation——官方译文

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5482207.html 前言 前面介绍了不少Android ...

  5. 【Android测试】【第十七节】Instrumentation——App任你摆布(反射技术的引入)

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处.  转载请注明出处:http://www.cnblogs.com/by-dream/p/5569844.html 前言 学习了上节之后,大家是否已经 ...

  6. Android 测试 之MonkeyRunner

    一.什么是MonkeyRunner monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器.通过monkeyrunner,您可以 ...

  7. 【Android测试】【第六节】Monkey——认识和使用

    ◆版权声明:本文出自carter_dream的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4688880.html 自动化工具 接触安 ...

  8. 【Android测试】【第一节】ADB——初识和用法

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处.  转载请注明出处:http://www.cnblogs.com/by-dream/p/4630046.html 写在前面的话 感觉自己进入Andr ...

  9. 【Android测试】【随笔】模拟双指点击

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5258660.html 手势 看到这个标题,很多人会想一想 ...

随机推荐

  1. 标准事件模型和IE事件模型有哪些区别?请具体解释他们的差异。

    通常,事件传送有三个阶段:事件捕获阶段,停留目标阶段,事件冒泡阶段. 1.阶段差异 DOM事件模型包含捕获阶段和冒泡阶段,DOM事件模型可使用e.stopPropagation()来阻止事件流:IE事 ...

  2. http://blog.csdn.net/jiazimo/article/details/17265061

    http://blog.csdn.net/jiazimo/article/details/17265061

  3. POJ3162 Walking Race(树形DP+尺取法+单调队列)

    题目大概是给一棵n个结点边带权的树,记结点i到其他结点最远距离为d[i],问d数组构成的这个序列中满足其中最大值与最小值的差不超过m的连续子序列最长是多长. 各个结点到其他结点的最远距离可以用树形DP ...

  4. RectAnimation用于在DrawingVisual画进度条

    使用Visual来画图,可以使用其派生类,UIElement.Viewport3DVisual用于呈现3D内容,其他可以用来画图的为DrawingVisual,使用DrawingVisual可以使用编 ...

  5. topcoder SRM 591 DIV2 TheArithmeticProgression

    #include <iostream> #include <cstdlib> using namespace std; class TheArithmeticProgressi ...

  6. Wikioi 1020 孪生蜘蛛 Label:Floyd最短路

    题目描述 Description 在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道. 根据防护中心的消息,敌方已经有一只特种飞蛾 ...

  7. 使用SBT构建Scala应用(转自git)

    # 使用SBT构建Scala应用 ## SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣, ...

  8. https资料

    1.HTTPS的七个误解   http://blog.httpwatch.com/2011/01/28/top-7-myths-about-https/ 中文 http://www.cnblogs.c ...

  9. RAID 容量计算器

    https://www.synology.com/zh-cn/support/RAID_calculator   磁盘阵列比较表   n/2 n/2 n n/2 安全性高 综合RAID 0/1优点,理 ...

  10. 【新产品发布】【EVC8001 磁耦隔离式 USB 转 RS-485】

    EVC8001 是 XiaomaGee 团队打造的精品级 USB 转 RS-485 隔离转换器,全部采用最优方案,每个细节均做到最优化.最佳化.亮点举不胜举: ==================== ...