【MonkeyRunner】eclipse中编写monkeyrunner脚本环境搭建

http://www.csdn123.com/html/itweb/20130815/60106_60105_60108.htm

http://blog.csdn.net/robinzhou/article/details/6771120

http://www.dup2.org/node/1538

【说明】MonkeyRunner是Android提供的自动化测试工具,能够执行Python语言编写的脚本;Python脚本可以在文本编辑器中编辑,也可以用eclipse集成Python插件,实现在eclipse中编写Python脚本;在eclips中编写Python脚本的好处是能够使用eclipse中的函数提示功能,更方便;但是,eclipse中编写的python脚本是无法直接执行的,只能在命令行下执行,因为Android SDK并未提供windows环境下的解释器,如果在linux环境下是可以直接在eclips中运行脚本的

一、搭建步骤

<1>. 建立Python的开发环境;

这里使用的Python的开发环境是eclipse + pydev插件来配置python的开发环境,如果想要在命令行下使用python的话,需要设置计算机的环境变量。

1.1 下载Python的安装包.安装Python。

      

Windows 环境搭建:首先,从 Python 的官方网站 www.python.org 下载最新的版本,安装好之后把你的安装目录添加至环境变量 path 中。

1.2  安装eclipse插件

 

 

查找该插件,并安装,注意安装过程中可能存在需要trust插件的情况,直接选择信任即可。

 

然后等待插件安装完成即可,重启eclipse,下面需要设置eclipse的pydev的插件的环境。


选择刚才python完成路径下的python.exe解释器。

 

 

最终完成之后的效果如下:

 

注:确认自己的jdk版本,最新的pydev需要jre7.低于这个版本请下载低版本http://sourceforge.net/projects/pydev/files/pydev/
下载2.82版本1.6可用

<2>导入monkeyrunner相关的jar

打开eclipse设置,window->preferences

 

新建一个lib目录,接着选择添加好的目录新添ddmlib.jar guavlib.jar  monkeyrunner.jar  sdklib.jar这几个jar

 

<3>.monkeyrunner工程

 新建一个python工程。

 

 键入工程名,点击完成,将生成一个python project

 

我们新建一个pythonmodule


可以开始代码编写了。

代码示例:

 

导入此程序所需的monkeyrunner模块

from com.android.monkeyrunnerimport MonkeyRunner MonkeyDevice

连接当前设备,返回一个MonkeyDevice对象

device=MonkeyRunner.waitForConnection()

运行测试应用

device.startActivity component='com.huawei.imax.launcher'

形成一个点击事件

device.touch200,1800,'DOWN_AND_UP' 

截取屏幕截图

result = device.takeSnapShot

#将截图保存至文件

result.writeToFile'myproject/shot1.png' 'png' 

 

 

<4>执行脚本

通过monkeyrunner执行需要对应的环境,可以下载一个androidsdk;

打开cmd,切换至androidsdk的tools目录,执行命令

monkeyrunner 文件地址

二、异常处理

按照上述方法配置后,编写脚本可能会提示如下错误

Unresolved import: MonkeyDevice
Unresolved import: MonkeyRunner

这是因为,虽然在Preference——》java——》User Libraries中导入了ddmlib.jar guavlib.jar monkeyrunner.jar  sdklib.jar这几个jar,但是工程依然无法找到monkeyrunner.jar

解决方法,在External Libraries中继续加入上述jar包


 三、脚本执行

      1、windows环境下eclipse中是无法执行monkeyrunner脚本的,提示如下错误

        Traceback (most recent call last):
  File "D:\Mywork\HelloPython\src\test.py", line 2, in <module>
    from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
ImportError: No module named com.android.monkeyrunner

     2、在命令行下执行monkeyrunner脚本,需要带上脚本的完整路径,即使在脚本所在目录


四、使用wrapEasyMonkey.jar

      下载wrapEasyMonkey.jar,当前版本为2.0版本,直接复制到\adt-bundle-20131030\sdk\tools\lib目录下即可

      在工程的-》properties-》PyDev-PYTHONPATH,选择External Libraries,导入wrapEasyMonkey.jar

    

五、修改warpEasyMonkey

     参考:http://blog.csdn.net/testing_is_believing/article/details/16369639

Android自动化测试之Monkeyrunner解决ID重复问题

      将核心代码

def getChildView(self, parentId, *childSeq):
    hierarchyViewer = self.device.getHierarchyViewer()
    str_getchildview="hierarchyViewer.findViewById('" + parentId +"')"    
    for index in childSeq:       
        str_getchildview+=('.children[' + str(index) + ']')         
    exec 'child_view=' + str_getchildview
    return child_view

拷贝到warpEasyMonkey.jar的warpEasyMonke.py文件末尾,并重新打包warpEasyMonkey.jar,替换掉\adt-bundle-20131030\sdk\tools\lib目录下的原jar包,clean工程,即可使用该函数,找到重复id


六、测试实践

#coding=utf-8
from com.whoistester.android.testimport import os,sys,re,string,locale,ViewClient,wrapEasyMonkey,MonkeyDevice,MonkeyRunner,EasyMonkeyDevice,By
package = 'com.android.contacts'
activity = '/com.android.contacts.activities.PeopleActivity'
component = package + activity
deviceId='04c***********'
mydevice = wrapEasyMonkey(deviceId)
mydevice.startActivity(component)
MonkeyRunner.sleep(5)

#清空联系人,初始状态下添加一个联系人
mydevice.touchViewById('id/create_contact_button',mydevice.DOWN_AND_UP)
MonkeyRunner.sleep(2)
mydevice.type("test1")
mydevice.touchViewById('id/0xc', mydevice.DOWN_AND_UP)
mydevice.type("company1")
mydevice.touchViewById('id/add_text',mydevice.DOWN_AND_UP)
MonkeyRunner.sleep(2)
mydevice.press('KEYCODE_BACK', mydevice.DOWN_AND_UP)
mydevice.touchViewById('id/0x16',mydevice.DOWN_AND_UP)
mydevice.type("15311111001")
mydevice.touchViewById('id/done',mydevice.DOWN_AND_UP)
MonkeyRunner.sleep(2)
mydevice.press('KEYCODE_BACK', mydevice.DOWN_AND_UP)
#从联系人列表添加联系人
for i in range(2,10):
    name = "test"+str(i)
    company = "company"+str(i)
    num = str(15311111000+i)
    print "name="+name+"company="+company+"num="+num
    MonkeyRunner.sleep(5)
    mydevice.touchViewById('id/menu_add_contact', mydevice.DOWN_AND_UP)
    MonkeyRunner.sleep(2)
    mydevice.type(name)
    mydevice.touchViewById('id/0xc', mydevice.DOWN_AND_UP)
    mydevice.type(company)
    mydevice.touchViewById('id/add_text',mydevice.DOWN_AND_UP)
    MonkeyRunner.sleep(2)
    mydevice.press('KEYCODE_BACK', mydevice.DOWN_AND_UP)
    mydevice.touchViewById('id/0x16',mydevice.DOWN_AND_UP)
    mydevice.type(num)
    mydevice.touchViewById('id/done',mydevice.DOWN_AND_UP)
    MonkeyRunner.sleep(3)
    #添加完成后判断是否成功
    if (cmp(mydevice.getTextById('id/action_bar_title'),name) == 0):
        print "####TestResult:save "+name+" success!!!"
    else:
        print "####TestResult:save "+name+" FAILED!!!"  
    mydevice.press('KEYCODE_BACK', mydevice.DOWN_AND_UP)

脚本执行

结果将保存在log.txt文件中


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值