您的位置:首页 > 编程语言 > Java开发

使用chimpchat和ddmlib写基于java的MonkeyRunner程序

2015-03-12 23:00 323 查看
AndroidSDK下的monkeyrunner可以通过python脚本调用api的方式控制设备,实在不想各种语言横插一杠,所以想着用java还写monkeyrunner脚本,不折腾不知道,其实也比较简单。

MonkeyRunner源码分析已经有同学做过了,可以参考:http://blog.csdn.net/zhubaitian/article/category/2598287

Java方式来写类似MonkeyRunner的脚本,主要依赖chimpchat,源码参见:https://code.google.com/p/aster/source/browse/src/com/android/chimpchat/?r=967f7f8cd6249c69e00c6de7ff1b55bd0f51d311。同时我们还是用ddmlib,主要是用于adb连接。

1、对于maven工程,首先我们需要写入这两个库的依赖:

<dependency>
<groupId>net.sf.sociaal</groupId>
<artifactId>chimpchat</artifactId>
<version>22.6.3</version>
</dependency>
<dependency>
<groupId>com.android.tools.ddms</groupId>
<artifactId>ddmlib</artifactId>
<version>24.1.3</version>
</dependency>
2、获取adb连接并添加android设备变更监听器

AndroidDebugBridge.addDeviceChangeListener(new DeviceChangeListener());
AdbBackend adbBackend =  new AdbBackend(adbPath,false);


3、 DeviceChangeListener类实现IDeviceChangeListener接口,并在设备连接状态变化时添加自己的处理函数,例如设备连接的时候

@Override
public void deviceConnected(IDevice device) {
logger.info("{} 设备连接",device.getSerialNumber());
logger.info("当前状态:{}",device.getState().name());
IChimpDevice devices = adbBackend.waitForConnection(30000, device.getSerialNumber());
String SerialNumber = device.getSerialNumber();
MonkeyThread monkeythread = new MonkeyThread(devices,device,SerialNumber);
monkeythread.setName(SerialNumber);
threadpool.add(monkeythread);
showAllDevices();
monkeythread.setApkPath(apkPath);
monkeythread.start();
}
4、MonkeyThread中实现具体的操作函数,例如单击操作

public void actionSingleClick(int x, int y) {
logger.info("{} SingleClick Action X:{} Y:{}", threadName, x, y);
chimpDevice.touch(x, y, TouchPressType.DOWN_AND_UP);
}
5、MonkeyThread继承自Thread,在run函数中实现各种操作的控制。

6、我们可以通过IChimpDevice的getProperty获取很多当前设备信息,例如手机品牌,型号,android版本等,当然还有一个最重要的属性调用方法:chimpDevice.getProperty("am.current.comp.class"),可以获取当前的activity。

其他属性有:

am.current.action
am.current.categories
am.current.comp.class
am.current.comp.package
am.current.data
am.current.package
build.board
build.brand
build.cpu_abi
build.device
build.display
build.fingerprint
build.host
build.id
build.manufacturer
build.model
build.product
build.tags
build.type
build.user
build.version.codename
build.version.incremental
build.version.release
build.version.sdk
clock.millis
clock.realtime
clock.uptime
display.density
display.height
display.width
monkey.version
7、chimpdevice还支持其他获取view的方法,例如getHierarchyViewer等,但是仅限于工程机及模拟器,产品机上该功能所依赖的ViewServer是关闭的,所以均不能用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: