前段时间,参与开发了公司基于appium的UI自动化的工作。写此文章是为了把所用到的技术和思路做一个保留,以便日后查看方便。
PS:1.本文章不涉及服务端代码。2.本文章所涉及的内容只支持Android手机,IOS不在这里说明。
前段时间有幸参与了公司的UI自动化平台的工作, 对于运行自动化case前需要做一系列的准备工作(比如手机的管理工作等),由我来开发完成。因无人请教,所以开始做的时候也无思路,通过Googld或baidu了很多东西,一步一步的从理清思路到开发完成。废话不多说,直接上内容。
本程序主要的功能是在运行自动化case之前,为平台提供一些手机的必要参数、手机状态及与自动化平台的交互功能。目前可承载能力如下:
1:自动识别手机的上线与下线。
2:实时获取手机的状态(用来判断当前手机是否为空闲状态)。
3:获取手机基本参数。
4:http网络协议的引入(用来与服务端进行通信)。
-----------------------------据说有分割线是为了好看???---------------------------------
下面来说下详细的实现步骤:
因工程需要管理手机设备,监听手机上线与下线,而谷歌ddmlib库提供了解决方案。ddmlib是DDMS工具的核心,它封装了一系列对ADB功能的封装,在使用时,需引入ddmlib.jar、ddms.jar和ddmuilib.jar三个jar包,其中ddmlib.jar是核心功能,其它两个是为了查看其实现原理而引的(ddms.jar和ddmuilib.jar包不引入也不会影响其功能的使用)。对于ddmlib库,本工程只使用了很少一部分功能,ddmlib是个很强大的库,能做的事情很多,有兴趣的话可以自行Google其使用攻略。
代码实现:
public void init(boolean clientSupport) {
AndroidDebugBridge.init(clientSupport);
mAdbBridge = AndroidDebugBridge.createBridge("adb", false);
}
要使用ddmlib首先需要初始化AndroidDebugBridge或者说首先要create一个AndroidDebugBridge出来,并且通过getDevices()方法获得了一个设备类(IDevice),这样我们就可以正常的使用ddmlib库里面提供的东西了。
public static void waitDevicesList(AndroidDebugBridge bridge) {
int count = 0;
while (bridge.hasInitialDeviceList() == false) {
try {
Thread.sleep(500);
count++;
} catch (InterruptedException e) {
}
if (count > 60) {
System.err.print("主类等待获取设备超时");
break;
}
}
}