`
chenxu_8456
  • 浏览: 40583 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

在monkeyrunner里使用Java做为脚本语言

 
阅读更多
monkeyrunner官网和很多地方都是使用的python做为脚本语言的,但是实际上monkeyrunner是支持Java做为脚本语言的,下面是对在monkeyrunner中使用Java的一些尝试,已经全部使用过是可行的,需要引入的jar包包括:
ddmlib.jar;guavalib.jar;sdklib.jar和monkeyrunner.jar
package com.test

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;

import com.aliyun.smoking.monkeyrunner.extend.ImageProcess;
import com.android.monkeyrunner.adb.AdbBackend;
import com.android.monkeyrunner.core.IMonkeyDevice;
import com.android.monkeyrunner.core.IMonkeyImage;
import com.android.monkeyrunner.core.TouchPressType;

/**
 * this class provide java code to call monkeyrunner.jar to execute test case
 * 
 * @author cx
 * 
 */
public class RunnerProxy {
	private IMonkeyDevice device;
	private AdbBackend adb;
	private static RunnerProxy instance;

	public static RunnerProxy getInstance() {
		if (instance == null) {
			instance = new RunnerProxy();
		}
		return instance;
	}

	private RunnerProxy() {
		adb = new AdbBackend();
	}

	/**
	 * this function will connect to a device, emulator or phone
	 */
	public void connect() {
		assert (adb != null);
		device = adb.waitForConnection();
	}

	/**
	 * this function clear device connect
	 */
	public void dispose() {
		if (device != null) {
			device.dispose();
			device = null;
		}
	}

	private String imageDir;

	public void setImageDir(String imageDir) {
		this.imageDir = imageDir;
	}

	public String getImageDir() {
		return imageDir;
	}

	private String logDir;

	public void setLogDir(String logDir) {
		this.logDir = logDir;
	}

	public String getLogDir() {
		return logDir;
	}

	/**
	 * this function finish touch operation
	 * 
	 * @param x
	 *            : x coordinate
	 * @param y
	 *            : y coordinate
	 */
	public void touch(int x, int y) {
		assert (device != null);
		device.shell("sendevent /dev/input/event6 3 48 1");
		device.shell("sendevent /dev/input/event6 3 53 " + x);
		device.shell("sendevent /dev/input/event6 3 54 " + y);
		device.shell("sendevent /dev/input/event6 0 2 0");
		device.shell("sendevent /dev/input/event6 0 0 0");
		device.shell("sendevent /dev/input/event6 3 48 0");
		device.shell("sendevent /dev/input/event6 0 2 0");
		device.shell("sendevent /dev/input/event6 0 0 0");
	}

	/**
	 * this function finish long touch operation
	 * 
	 * @param x
	 *            : x coordinate
	 * @param y
	 *            : y coordinate
	 */
	public void longTouch(int x, int y) {
		assert (device != null);
		device.drag(x, y, x, y, 10, 2);
	}

	/**
	 * this function finish drag from one point to another point
	 * 
	 * @param x
	 *            : x coordinate of start point
	 * @param y
	 *            : y coordinate of start point
	 * @param endX
	 *            : x coordinate of end point
	 * @param endY
	 *            : Y coordinate of end point
	 * 
	 */
	public void drag(int x, int y, int endX, int endY) {
		assert (device != null);
		device.drag(x, y, endX, endY, 10, 2);
	}

	/**
	 * this function finish type a text to view operation
	 * 
	 * @param value
	 *            : text to type in
	 */
	public void type(String value) {
		assert (device != null);
		device.type(value);
	}

	/**
	 * this function finish click a key operation
	 * 
	 * @param keyCode
	 *            : key code
	 */
	public void press(String keyCode) {
		assert (device != null);
		device.press(keyCode, TouchPressType.DOWN_AND_UP);
	}

	/**
	 * this function finish start an activity operation
	 * 
	 * @param component
	 *            : activity what to start
	 */
	public void startActivity(String component) {
		assert (device != null);
		String action = "android.intent.action.MAIN";
		Collection<String> categories = new ArrayList<String>();
		categories.add("android.intent.category.LAUNCHER");
		device.startActivity(null, action, null, null, categories,
				new HashMap<String, Object>(), component, 0);
	}

}
分享到:
评论
1 楼 wyg1989 2011-11-02  
LZ  为什么我把几个包导进去了  但是引包的时候  com.andorid.monkeyrunner.core.IMonkeyDevice 这个包引不了  不知道怎么回事啊  我的邮箱是  wangyuegang1989@163.com   QQ  339631616  能告诉我是为什么啊  谢谢了!!!

相关推荐

Global site tag (gtag.js) - Google Analytics