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

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是关闭的,所以均不能用。





你可能感兴趣的:(使用chimpchat和ddmlib写基于java的MonkeyRunner程序)