packagecom.softwinner.performance.benchmark;importandroid.content.Context;importandroid.content.Intent;importandroid.support.test.InstrumentationRegistry;importandroid.support.test.uiautomator.By;importandroid.support.test.uiautomator.UiDevice;importandroid.support.test.uiautomator.UiObject;importandroid.support.test.uiautomator.UiObjectNotFoundException;importandroid.support.test.uiautomator.UiSelector;importandroid.support.test.uiautomator.Until;importandroid.util.Log;importorg.dom4j.Document;importorg.dom4j.Element;importorg.dom4j.io.SAXReader;importorg.junit.Before;importorg.junit.Test;importjava.io.BufferedReader;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.Reader;importjava.util.Iterator;importjava.util.LinkedList;importjava.util.List;import staticorg.hamcrest.core.IsNull.notNullValue;import staticorg.junit.Assert.assertThat;import staticorg.junit.Assert.assertTrue;/*** Created by Administrator on 2017/7/21.*/

public classtest {private static Listlist;private static final String PATH = "/sdcard/window_dump.xml";private final static int LAUNCH_TIMEOUT = 5000;

UiDevice device;private final String mLogTag = "testliuzhipeng";

@Beforepublic void setup() throwsInterruptedException {

device=UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());this.grantPermission();

openApplication("com.antutu.videobench");

Thread.sleep(20000);

device.waitForIdle();

Log.i(mLogTag,"sleep finished");

}

@Testpublic void testAA() throwsUiObjectNotFoundException, IOException, InterruptedException {

File file= newFile(PATH);if(file.exists()){

assertTrue(String.format("delete %s fail ",PATH), file.delete());

}

device.dumpWindowHierarchy(file);if (!file.exists()) {

Log.i(mLogTag,"dump fail");

assertTrue("dump fail", false);

}try{

list= new LinkedList();//1、读取xml文件

SAXReader reader = newSAXReader();

Document document=reader.read(file);//2、获取根节点

Element rootNode =document.getRootElement();

treeWalk(rootNode);

Log.i(mLogTag,"list::" +list.toString());

Log.i(mLogTag,"list.size::" +list.size());if (list != null)

list.clear();

list= null;

Log.i(mLogTag,"End");

}catch(Exception e) {

e.printStackTrace();

}

}private static voidprint(Object obj) {

System.out.println(obj);

}private void treeWalk(Element element) throwsUiObjectNotFoundException {

String text;for (Iterator i =element.elementIterator(); i.hasNext(); ) {

Element elementNode=(Element) i.next();if (elementNode.elements().size() > 0) {

treeWalk(elementNode);

}

print(elementNode.toString());

Log.i(mLogTag, elementNode.toString());

XMLBean bean= newXMLBean(elementNode);

print("-------------------------------------------");

Log.i(mLogTag,"-------------------------------------");if (bean.text.equals("Play Music")) {

print(bean.bounds);

Log.i(mLogTag, bean.bounds);

}

print("-------------------------------------------");

list.add(bean);

}

}public voidopenApplication(String packageNameStr){//wakeScreen();

/*Start from the home screen*/device.pressHome();final String launcherPackage =device.getLauncherPackageName();

assertThat(launcherPackage,notNullValue());

device.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),

LAUNCH_TIMEOUT);//launch the app

Context context =InstrumentationRegistry.getContext();final Intent intent =context.getPackageManager()

.getLaunchIntentForPackage(packageNameStr);//Clear out any previous instances

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

context.startActivity(intent);//Wait for the app to appear//try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}//wakeScreen();

device.wait(Until.hasObject(By.pkg(packageNameStr).depth(0)),

LAUNCH_TIMEOUT);

}public voidgrantPermission(){

openApplication("com.softwinner.performance.frameratetest");try {Thread.sleep(1000);} catch(InterruptedException e) {e.printStackTrace();}

Log.i(mLogTag,"after open test apk success, grant stored permission");//wakeScreen();

UiObject permission = device.findObject(newUiSelector()

.resourceId("com.android.packageinstaller:id/permission_allow_button")

);if(permission.waitForExists(1000)){try{//wakeScreen();

permission.clickAndWaitForNewWindow();

Log.i(mLogTag,"click grant store permission");

}catch(UiObjectNotFoundException e) {

e.printStackTrace();

}

}

}public void printMessage(finalInputStream input){new Thread(newRunnable() {

@Overridepublic voidrun() {

Reader reader= newInputStreamReader(input);

BufferedReader bf= newBufferedReader(reader);

String line= null;try{while((line = bf.readLine()) != null){

Log.i(mLogTag, line);

}

}catch(IOException e){

e.printStackTrace();

}

}

}).start();

}

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐