微信号:grzlwx

介绍:光荣之路官方资讯

【Android测试】MonkeyRunner之录制回放

2015-11-06 22:19 carter_d

吴老的《selenium webdriver 实战宝典》出版了!

前言 


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

  恰好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 mrfrom 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()

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

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

(作者:carter_dream 来源:http://www.cnblogs.com/by-dream/p/4861693.html)


   
              
   
              
   
              
   
             
   
             
   
             
   
             
   
             
   
             
   
             
   
             
   
             
   
             

感谢作者,传播测试知识、技能与正能量!
分享测试生活,思考测试人生!欢迎来稿735821166@qq.com

光荣之路软件测试培训

官网:http://www.gloryroad.cn/

微信公众号:gloryroadtrain

性能测试QQ群:415987441
软件测试招聘QQ群: 203715128
自动化3群QQ: 371211499

 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 【视频】我们的客户故事 - 有信网络 广州传智播客首期PHP火爆开班----与偶像相会的日子 Android屏幕适配方案,直接填写设计图上的像素尺寸即可完成适配,最大限度解决适配问题 元数据核心架构解析(PPT) 链家网前端总架构师杨永林:我的8年架构师成长之路