wrapEasyMonkey howto入门教程和wrapEasyMonkey api 资料文档

wrapEasyMonkey howto入门教程1.1

本文章内容在仅windows 7上经过试验,使用该库主要目的,
1. 将monkeyDevice 与 easyMonkeyDevice统一封装到库
2. 进行自动化操作时, 增加对异常处理,防止异常退出 (例如 当某textview未显示出来时, 捕捉对该textview的操作异常,防止测试脚本异常退出. 如果手动在脚本里加入sleep语句, 但sleep的时间难以指定)
3. 增加了一些比较便捷的函数, 降低了使用 monkeyDevice 和 easyMonkeyDevice 的复杂度。
另需要说明的是: 该wrapEasyMonkey 库是加入了androidviewclient库。 androidviewclient库是Diego Torres Milano 开发的。

如何使用呢。 请先到sourceforge进行下载wrapEasyMonkey源码。sourceforge网站,在某些地区被封锁了,请尝试使用代理访问. 对无耻封锁该网站的管理商,进行B视.

1. 首先你需要有最新的android sdk.

这只是一个sdk manager工具。下载安装后,并打开。 可以看到有tools,Android不同版本的sdk platform等(例如Android 4.0.3 api15 , api 13), 还有Extras。

注意我们这里至少需要下载tools里的Android SDK tools 和 Android SDK Platform-tools。 如果你已经有下载过, 建议您升级到最新的版本。 因为sdk 经常有更新,有些文件会有变动,包括文件夹的组织结构。

2. 将下载到的wrapEasyMonkey源码zip包。

解压后放到某个目录。 您可以解压到sdk里的tools文件夹的lib子文件夹。 当然放到哪里都ok,因为之后我们设定环境变量,以便让monkeyrunner 执行脚本的时候可以加载到这些库。 但未了便于您的管理, 所以建议放到sdk里的某个目录。

3. 设定环境变量。

设定环境并不是必须的, 但如果不设定,那么意味着您的程序和库文件的位置不能够是灵活的。 就是说代码中必须写死您加载库的地址。 当然我们不像这么做。
1) 首先我们要添加的是 Android_HOME 环境变量。
2) 然后是ANDROID_WRAPEASYMONKEY_HOME 环境变量。 后者是指的您的wrapEasyMonkey源码的解压路径。 例如 C:\Users\hp\Downloads\AndroidViewClient\wrapEasyMonkey 进入后,我们可以看到如下的目录结构就对了。
3个文件夹(examples, src, tests) , 2个文件(.project, .pydevproject)
3) 最后我们将android sdk里的tools文件夹和platform-tools文件夹加到系统环境变量path里。这样我们可以方便的调用tools的命令了。例如adb, ddms, hierachyviewer等。

4. 写测试脚本。

如下是一个测试脚本例子(wrapEasyMonkey 1.1 api 具体说明及介绍)。 当然例子也可以去wrapEasyMonkey里的例子文件夹找例子。

 

#! /usr/bin/env monkeyrunner

'''
Copyright (C) 2012   
@author:  @@@@
'''

import re
import sys
import os
import string
import locale

'''
将库的地址添加到系统路径
'''
try:
ANDROID_VIEW_CLIENT_HOME =  os.environ['ANDROID_WRAPEASYMONKEY_HOME']
except KeyError:
print >>sys.stderr, "%s: ERROR: ANDROID_VIEW_CLIENT_HOME not set in environment" % __file__
sys.exit(1)
sys.path.append(ANDROID_WRAPEASYMONKEY_HOME + '/src')
sys.setdefaultencoding('utf-8')

from com.dtmilano.android.viewclient import ViewClient
from com.dtmilano.android.wrapEasyMonkey import wrapEasyMonkey
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from com.android.monkeyrunner.easy import By

package = 'com.android.contacts'
activity = '.activities.PeopleActivity'
component = package + "/" + activity
device = MonkeyRunner.waitForConnection(10) #连接device

device.startActivity(component=component)# 启动联系人应用

easyDevice = EasyMonkeyDevice(device) #生成easyDevice 对象

wrapdevice = wrapEasyMonkey(easyDevice,device) #由easyDevice,device 生成wrapEasyMonkey对象

create_contact_button = wrapdevice.getView('id/create_contact_button') # 通过wrapEasyMonkey对象获得创建新联系人的view视图对象

wrapdevice.touchView(create_contact_button,wrapdevice.DOWN_AND_UP) #对该view进行点击操作,该函数会调用easyMonkey api, 
自动获得该view的坐标值,并进行touch行为。

wrapdevice.sleep(2) # 睡眠2秒

wrapdevice.touchDialogButton(2)  #对弹出的对话框,进行选择 , 参数为1 时, 选择左边的按钮, 参数2时,选择右边的按钮。 为什么没有用touchView函数,
是因为当前最新的layout分析有问题, #不能获得对话框的alertdialog的正确的坐标值。 所以这里的touchDialogButton是通过上下的方向键进行控制的。

wrapdevice.touchViewById('id/0x3',wrapdevice.DOWN_AND_UP) #touchViewById 可以直接对view的id进行直接touch, 不需要中间先获得该view的对象。



wrapdevice.type('test01') # 输入字符


5. 执行测试脚本。

 打开dos命令窗口或者linux的shell terminal。 运行
“monkeyrunner 脚本路径和名称”。 执行之前确信您已经正确安装了手机的驱动. 可以通过adb devices 进行查看

wrapEasyMonkey api 1.0 资料文档

howto教程源码下载请点击进入

http://blog.whoistester.com/?p=785

  • getView(id) 

说明:根据id,获得view对象

(id为view的id值,例如id/button01
 , id/textview01)
参数1:id值,为字符串
  • getText(view)
说明:根据视图对象,获得该视图对象的mText属性值
参数1:视图对象, 该对象通过getView函数可以获得
  • touchView(view,type)
说明:点击视图对象
参数1:通过getView获得view对象
参数2: up,down_and_up,down 三种类型。 传入时,可以用wrapEasyMonkey对象的属性。
例如a = wrapEasyMonkey (easyDevice,device) 获得a的wrapEasyMonkey对象后,传入
a.UP  ,  a.DOWN_AND_UP,  a.DOWN.
  • touchViewById(id,type)
说明:直接通过id值,对该view视图进行点击
参数1: id值,为字符串
参数2: up,down_and_up,down 三种类型。 传入时,可以用wrapEasyMonkey对象的属性。
 例如a = wrapEasyMonkey (easyDevice,device) 获得a的wrapEasyMonkey对象后,传入
a.UP  ,  a.DOWN_AND_UP,  a.DOWN.
  • touchPoint(x,y,type)
说明:直接输入坐标值,对该坐标值进行touch行为
参数1: x坐标
参数2:y坐标
参数3: up,down_and_up,down 三种类型。 传入时,可以用wrapEasyMonkey对象的属性。
 例如a = wrapEasyMonkey (easyDevice,device) 获得a的wrapEasyMonkey对象后,传入
a.UP  ,  a.DOWN_AND_UP,  a.DOWN.
  • hasFocused(id)
说明:判断当前id的view是否处在焦点位置
参数1: id值,为字符串
  • getPosition
未完成
  • touchDialog
未完成,对alert dialog窗口进行touch操作 (该函数是解决一些局限问题。 alert dialog
的操作不能通过 touchView 和 touchViewByID 进行, 是因为touchView 和
touchViewById 对该类型view视图的坐标获取有问题,目前通过touchDialogButton函数实现)
  • touchDialogButton
说明: 对alert dialog窗口进行touch操作 (该函数是解决一些局限问题。 alert dialog
的操作不能通过 touchView 和 touchViewByID 进行, 是因为touchView 和
touchViewById 对该类型view视图的坐标获取有问题。) 该函书是通过下移焦点,左右移焦点
进行实现的对对话框的操作。
参数1:up,down_and_up,down 三种类型。 传入时,可以用wrapEasyMonkey对象的属性。
例如a = wrapEasyMonkey (easyDevice,device) 获得a的wrapEasyMonkey对象后,传入
a.UP  ,  a.DOWN_AND_UP,  a.DOWN.
  • type(string)
说明:输入字符串
参数1: 普通字符串,特殊字符需要通过press函数进行输入
  • press(keycode,type)
说明:输入单个字符
参数1: 单个字符keycode,字符串类型, keycode的定义见android developer 文档
以keycode开头的常量
参数2: up,down_and_up,down 三种类型。 传入时,可以用wrapEasyMonkey对象的属性。
例如a = wrapEasyMonkey (easyDevice,device) 获得a的wrapEasyMonkey对象后,传入
a.UP  ,  a.DOWN_AND_UP,  a.DOWN.
  • sleep(second)
说明:睡眠
参数1: 秒数,整数型
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值