Uiautomator封装的具体类:
import android.os.Environment;
import android.support.test.uiautomator.UiAutomatorTestCase;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiObjectNotFoundException;
import android.support.test.uiautomator.UiSelector;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;
public class UiautomatorAssistant extends UiAutomatorTestCase {
private UiDevice uiDevice;
private String m_logpathString = Environment.getExternalStorageDirectory().getPath()+"/PerformanceLog.txt";
private final int CLICK_ID = 2000;
private final int CLICK_TEXT = 2001;
public UiautomatorAssistant(UiDevice uiDevice) {
this.uiDevice = uiDevice;
}
// 通过id来进行点击操作
public boolean ClickById(String id) {
return ClickByInfo(CLICK_ID, id);
}
// 通过text来进行点击操作
public boolean ClickByText(String text) {
return ClickByInfo(CLICK_TEXT, text);
}
public void setText(String id,String text){
UiObject uiObject = uiDevice.findObject(new UiSelector().resourceId(id));
try {
uiObject.clearTextField();
uiObject.setText(text);
} catch (UiObjectNotFoundException e) {
e.printStackTrace();
}
}
private boolean ClickByInfo(int CLICK, String str) {
UiSelector uiselector = null;
// switch根据不同的CLICK标识,创建出UiSelector的对象
switch (CLICK) {
case CLICK_ID:
uiselector = new UiSelector().resourceId(str);
break;
case CLICK_TEXT:
uiselector = new UiSelector().text(str);
break;
default:
return false;
}
// 根据UiSelector对象构造出UiObject的对象
UiObject uiobject = new UiObject(uiselector);
// 判断该控件是否存在
int i = 0;
while (!uiobject.exists() && i < 5) {
SolveProblems();
sleep(500);
if (i == 4) {
TakeScreen(str + "-not-find");
return false;
}
i++;
}
// 点击
try {
UiAutomationLog("click type:" + CLICK + " content:" + str);
uiobject.click();
} catch (UiObjectNotFoundException e) {
e.printStackTrace();
}
return true;
}
/* 当进不下去的时候,使用该方法,例如可能是出现了一些对话框遮挡,该方法会把对话框干掉 */
private void SolveProblems() {
}
/* 保存屏幕截图参数descrip 为 描述该截图的内容 */
private void TakeScreen(String descrip) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
String datestr = calendar.get(Calendar.HOUR_OF_DAY) + "_" + calendar.get(Calendar.MINUTE) + "_" + calendar.get(Calendar.SECOND);
File files = new File(Environment.getExternalStorageDirectory().getPath()+"/" + datestr + "_" + descrip + ".jpg");
UiAutomationLog("TakeScreen: " + datestr + "_" + descrip + ".jpg");
uiDevice.takeScreenshot(files);
}
/* 打log记录在手机中 */
private void UiAutomationLog(String str) {
// 取得当前时间
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
String datestr = calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE) + ":" + calendar.get(Calendar.SECOND) +
calendar.get(Calendar.MILLISECOND) + ":";
FileWriter fwlog = null;
try {
fwlog = new FileWriter(m_logpathString, true);
fwlog.write(datestr + str + "\r\n");
System.out.println(datestr + str);
fwlog.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fwlog != null) {
fwlog.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
具体使用方法:
import java.io.IOException;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
public class Test_wechat extends UiAutomatorTestCase{
UiautomatorAssistant uiautomatorAssistant ;
public void testDemo() throws IOException, UiObjectNotFoundException {
uiautomatorAssistant = new UiautomatorAssistant(getUiDevice());
// 启动App
Runtime.getRuntime().exec("am start com.tencent.mm/com.tencent.mm.ui.LauncherUI");
sleep(3000);
/*----------------------- 验证第一种小视频的打开方式------------------------------------*/
uiautomatorAssistant.ClickByText("通讯录");
// 点击一个好友
uiautomatorAssistant.ClickById("com.tencent.mm:id/gx");
// 点击发消息
uiautomatorAssistant.ClickByText("发消息");
// 点击发送栏的“+”
uiautomatorAssistant.ClickById("com.tencent.mm:id/wm");
// 点击小视频
uiautomatorAssistant.ClickByText("小视频");
// 验证第一种小视频打开方式
UiObject obj_anzhupaiObject = new UiObject(new UiSelector().text("按住拍"));
if (obj_anzhupaiObject.exists()){
uiautomatorAssistant.UiAutomationLog( "第一次进入小视频的方法测试通过");
}else {
uiautomatorAssistant.TakeScreen("第一次进入小视频的方法测试不通过");
}
}
}