MonkeyRunner实例讲解

一,  终端输入单行命令
1
开启android 模拟器
首先使用eclipseAVD  Manager来创建模拟器antester,然后在命令地下运行c:\emulator @antester即可启动模拟器。
2
执行monkeyrunner命令:

进入sdktool目录中,比如我的是D:\monkeyrunnertest\adt-bundle-windows-x86_64-20140702\sdk\tools.

输入monkeyrunner.bat(启动monkeyrunner这个批处理文件)
(1)
引入monkeyrunner需要的两个模块
from com.android.monkeyrunner i mport MonkeyRunner, MonkeyDevice 回车
(2)
把模拟器和monkey绑定,绑定后在monkeyrunner的操作等同于在模拟器的操作
device = MonkeyRunner.waitForConnection()
(3)
安装一个apk应用包
我安装的zhongchod:\robotiumest\apps\zhongchou.apk
device.installPackage("d:\\robotiumest\\apps\\zhongchou.apk ")

 (4) 接下来,我们就可以启动其中的任意activity了,只要传入packageactivity名称即可。命令如下:
device.startActivity(component = "
com.subject.zhongchou/com.subject.zhongchou.activity.SplashActivity ")
(5)
现在Application启动起来了,就可以根据你的需要执行具体的操作了,比如登录!
二,monkeyrunner运行python文件
1
,启动Eclipse,新建一个Python工程,创建Src文件夹,然后新建文件LoginTest.py.输入以下代码:

#-*- coding: UTF-8 -*-

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice

from com.android.monkeyrunner.easy import EasyMonkeyDevice

from com.android.monkeyrunner.easy import By

import time

 

def testlogin():

    #登录测试函数

    device = MonkeyRunner.waitForConnection()

easy_device=EasyMonkeyDevice(device)   

#安装众筹网的app

device.installPackage("D:\\robotiumautotest\\apps\\zhongchou.apk")

#启动App    device.startActivity(component="com.subject.zhongchou/com.subject.zhongchou.activity.SplashActivity")

    time.sleep(3)

    #输入用户名和密码  easy_device.touch(By.id('com.subject.zhongchou:id/loginnumber_phone'),MonkeyDevice.DOWN_AND_UP)    easy_device.type(By.id('com.subject.zhongchou:id/loginnumber_phone'),'XXXXXXX')    easy_device.touch(By.id('com.subject.zhongchou:id/loginnumber_password'),MonkeyDevice.DOWN_AND_UP)    easy_device.type(By.id('com.subject.zhongchou:id/loginnumber_password'),'XXXXXXX')

    #单击登录按钮    easy_device.touch(By.id('com.subject.zhongchou:id/go_numberlogin'),MonkeyDevice.DOWN_AND_UP)

    time.sleep(5)

   

 

def main():

    #此处可以写多个测试函数的调用,也可以安排执行顺序

    testlogin()  

 

if __name__=='__main__':

    main()

       

(2) 在命令行中用cd命令定位到android SDK的路径下的tools目录,运行如下命令:

D:\monkeyrunnertest\adt-bundle-windows-x86_64-20140702\sdk\tools>monkeyrunner.bat d:\monkeyrunnertest\ZhongChouTest\src\LoginTest.py

(4)模拟器上就开始安装众筹网的APP,安装完成后,执行打开,登录等操作。

三,真机运行MonkeyRunner测试用例

   如果想用真机运行测试用例,先将真机连接到电脑上,运行adb devices –l 查看连接是否成功,如果成功,就可以按模拟器上运行的方法来运行测试用例。

注意:真机运行的时候会出现:“Unable to get view server version from device 284d96a5”的错误,在网上查看了一下,发现出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器(准确地说,只有ro.secure参数等于0ro.debuggable等于1android系统)Hierarchy Viewer在连接手机时,手机上必须启动一个叫View Server的客户端与其进行socket通信。而在商业手机上,是无法开启View Server的,故Hierarchy Viewer是无法连接到普通的商业手机。

具体的解决办法

方法一:

见:http://maider.blog.sohu.com/255448342.html,上面说的挺麻熔岩烦的,而且是有风险的,我拿的是公司的测试机,不敢随便尝试。

方法二:

解决方法(以华为c8812为例):

1、找一个开发板的Android固件,我选择的是百度云rom

rom下载地址:http://pan.baidu.com/s/1eQIII58

2、用百度云刷机工具将rom写入手机(注意:写入之前请备份数据。)

3、等待一会,手机正常开机后就可以了

4、用adb shell service call window 3来查看

若返回值是:Result: Parcel(00000000 00000000 '........')" 说明View Server处于关闭状态

若返回值是:Result: Parcel(00000000 00000001 '........')" 说明View Server处于开启状态

5、安装busybox应用

6、设置>开发人员选项>离线日志勾选允许输出离线日志

posted @ 2014-11-06 15:39  潜龙9527  阅读(271)  评论(0编辑  收藏  举报