天天看点

增强型MonkeyRunner 脚本计划功能说明:功能实现:以后可能会更新的部分和改善的地方

前一段时间写的monkeyrunner资料

<a href="http://youxilua.blog.51cto.com/3357586/772666">http://youxilua.blog.51cto.com/3357586/772666</a>

可以自动安装apk到android模拟器或者android实机

可以截取设定好activity运行在android模拟器或者android实机上的效果图

截图根据设备名和截取时间保存

能够自动设别所有运行中的android模拟器或者android实机

能够自动安装在特定文件夹下所有的apk文件到android模拟器或者实机

设置好android /tootls 和 android /platform-tools 目录的到环境变量中,确保adb命令能够在cmd下正常运行

该功能需要创建以下几个文件

<a target="_blank" href="http://blog.51cto.com/attachment/201202/204836751.png"></a>

使用约定

每一行为需要运行的activity的完整名字

例如:

kg.tom/.HandlerThreadActivity 

kg.monkey/.MonkeyActivity

@echo off

rem 获取当前运行设备 adb devices &gt; devices.txt rem

获取APK文件 dir apk /B &gt; apk.txt rem 运行monkeyrunner

脚本 monkeyrunner work.py

xxxx

#导入我们需要用到的包和类并且起别名

import sys,time,datetime from com.android.monkeyrunner import

MonkeyRunner as mr from com.android.monkeyrunner import MonkeyDevice as

md from com.android.monkeyrunner import MonkeyImage as mi deviceslist = []

devices = [] snapshot = [] templist = [] f = open("devices.txt") while True:

line = f.readline() if line: templist.append(line.strip())

else: break;

f.close() templist.pop() for i in range(len(templist)):

deviceslist.append(templist[i].split('\t')) fc = open("componentName.txt")

complist = [] while True: comp = fc.readline() if comp:

complist.append(comp.strip())

else: break; fc.close() fp = open("apk.txt") apklist = []

while True: apk = fp.readline() if apk:

apklist.append(apk.strip()) else:

break; print 'apk list :'print apklist print 'start componentName list :'

print complist print 'devices list:'print deviceslist for i in range(1,len(deviceslist)):

print 'current devices:' print deviceslist[i]

devices.append(mr.waitForConnection(1.0,deviceslist[i][0]))

#安装apk文件

for j in range(len(apklist)):

devices[i-1].installPackage('apk/'+apklist[j])

#启动activity

for k in range(len(complist)):

print 'current start activity:'

print complist[k]

devices[i-1].startActivity(component=complist[k])

#设置延时秒数

mr.sleep(5.0)

#----------------

#这里可进行一定的UI操作

#mr.sleep(3.0)

#进行截图

snapshot.append(devices[i-1].takeSnapshot())

print 'end snapshot'

#创建时间字符串

t = time.strftime("%Y-%m-%d-%X",time.localtime())

t = t.replace(":","-")

#保存截图

package = complist[k].replace('/.','.')

snapshot[0].writeToFile('takeSnapshot/'+deviceslist[i][0]+'-'+t+'-'+package+'.png','png');

snapshot.pop()

<code>由于之前毫无编写python的经验,只能写成这样了,欢迎高手补充!!!!!!</code>

把tools文件夹里面的全部文件,同样放在android sdk tools 文件夹下即可,运行takeSnap.bat就可以获取到多个设备运行时的截图了,这个期间…你可以选择去泡一杯咖啡…耗时情况…看你要测试几个设备,还有如何测试了……

三个虚拟机,在一台实机,测试两个apk在这些设备的运行境况

<a target="_blank" href="http://blog.51cto.com/attachment/201202/205313455.png"></a>

以下为全部截图文件:

<a target="_blank" href="http://blog.51cto.com/attachment/201202/205349779.png"></a>

1,支持从外部读取monkeyrunner 脚本进行多设备运行…其实..现在这个也可以…只是没写上 2,同一样设备的截图放置在一样设备名的文件,(这个…其实补充起来也很快…不过,要做完善就要判断设备名与创建文件名是否合法等等,不过…我感觉,将所有截图放到一个文件夹下更方便用来比较,就没写了,有兴趣的自行补充…同时,也顺便贴到这里来吧…) 3,由于,本人的脚步编写功底实在是烂,不知道如何在运行环境中设置环境变量,就不得已要在android sdk tools目录 下运行,如果,觉得这个脚步还可以,希望帮忙完善,能够达到在任意目录下… 4,当设备是离线状态无法判断,不过,在以上的脚本中已经实现了获取设备的状态,只是,很少,碰到就懒得补充了…. 5,如果,出现无法连接设备…那么请再运行一遍…如果…还不行…就重启吧…这跟脚本没关系吧…貌似…就是有这种问题… 6,最后,附上下载地址: 本文转自 liam2199 博客,原文链接:  http://blog.51cto.com/youxilua/772652   如需转载请自行联系原作者

继续阅读