//package com.softwinner.pad.mark3d;
package com.softwinner.performance.benchmark.mark3d; import android.content.Context;
import android.content.Intent;
import android.os.RemoteException;
import android.support.test.InstrumentationRegistry;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiSelector;
import android.support.test.uiautomator.UiWatcher;
import android.support.test.uiautomator.Until;
import android.util.Log; import com.softwinner.performance.filecopyspeed.TestBase; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import static com.softwinner.performance.benchmark.mark3d.UiAssistant.LAUNCH_TIMEOUT;
import static junit.framework.Assert.assertTrue;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.junit.Assert.assertThat; /**
* mobilexprt2015 performance test
* @author liuzhipeng
*/ public class MobileXPRTTest { private static final String packageName = "com.mobilexprt2015";
private String[] path = {
"/sdcard/performance/mobilexprt/screen/",
"/sdcard/performance/mobilexprt/log/"}; private String logTag = "mobilexprttest";
private UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
private UiAssistant cAssistant = new UiAssistant(mDevice,path); private String startButton = "com.mobilexprt2015:id/customize_screen_start_tests";
private String testingObject = "com.mobilexprt2015:id/tv_next_scenario";
private String testendObject = "com.mobilexprt2015:id/group_name"; @Before
public void setUp() throws Exception {
cAssistant.setup(path,logTag);
this.watcherEndTheCall();
} /**
* test mobilexprt performance
* @author liuzhipeng
* @return null
* @throws Exception
*/
@Test
public void testAI030004MobileXPRT() throws Exception
{
int TestNumber = 0;
while(TestNumber < 1){
String assisStr = "[TestNumber_"+TestNumber+"]";
openApplication(packageName);
Log.i(logTag,assisStr+"open mobilexprt ");
Thread.sleep(5000);
// UiObject startTest = mDevice.findObject(new UiSelector().
// resourceId(startButton));
// assertTrue("not found start test button",startTest.exists());
// startTest.clickAndWaitForNewWindow();
// Log.i(logTag,assisStr+"click start test button");
// assertTrue("step[1] fail",cAssistant.WaitforUnitObjectExist(0,testingObject,5,100));
// Log.i(logTag,assisStr+"testing page["+testingObject+ "]exist");
// Thread.sleep(1000*60*1);
// assertTrue("step[2] fail",cAssistant.WaitforUnitObjectExist(0,testendObject,17*60,500));
// Log.i(logTag,assisStr+"test end page["+testendObject+"]exist");
// cAssistant.takescreen("mobilexprt[TestNumber_"+TestNumber +"]End",
// "[TestNumber_"+TestNumber +"]mobilexprtScore");
// Log.i(logTag,assisStr+"test end,and takescreen");
cAssistant.QuitApplication(packageName);
Log.i(logTag,assisStr+"quit mobilexprt");
Thread.sleep(1000*10);
TestNumber++; } }
public void openApplication(String packName) throws RemoteException {
mDevice.wakeUp();
/* Start from the home screen*/
mDevice.pressHome(); final String launcherPackage = mDevice.getLauncherPackageName();
assertThat(launcherPackage,notNullValue());
mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
LAUNCH_TIMEOUT); // launch the app
Context context = InstrumentationRegistry.getContext();
final Intent intent = context.getPackageManager()
.getLaunchIntentForPackage(packName);
// Clear out any previous instances
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent); // Wait for the app to appear
mDevice.wait(Until.hasObject(By.pkg(packName).depth(0)),
LAUNCH_TIMEOUT);
}
private void watcherEndTheCall(){
// UiDevice 动作不会触发监听器
// runWatcher是在查找控件失败时会调用,当然你也可以自己调用
// findAccessibilityNodeInfo里面会调用runWatcher
// UiObject.findAccessibilityNodeInfo,查找控件会用到
mDevice.registerWatcher("endCallWatcher", new UiWatcher() {
UiObject incomingCall = mDevice.findObject(new UiSelector()
.resourceId(""));
@Override
public boolean checkForCondition() {
System.out.println("endCallWatcher running");
if(incomingCall.exists()){
try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}
System.out.println("endCall success");
return true;
}
System.out.println("endCall fail");
return false;
}
});
}
@After
public void tearDown() throws Exception {
Log.i(logTag,"is triggered :"+ mDevice.hasWatcherTriggered("endCallWatcher"));
mDevice.removeWatcher("endCallWatcher"); }
}

[uiautomator篇] UiWatcher的使用的更多相关文章

  1. [uiautomator篇]uiwatcher 的使用场景

    http://www.yangyanxing.com/article/use-watcher-in-uiautomator.html   今天在uiautomator中实践了watcher的用法,这个 ...

  2. [uiautomator篇][1] 官网译文

    http://www.jianshu.com/p/7718860ec657 2016.07.25 20:59 字数 3675 Android UIAutomator浅谈 --------------- ...

  3. [uiautomator篇] 基类

      package com.softwinner.performance.benchmark; /** * UiAssistant public class * @author liuzhipeng ...

  4. [uiautomator篇][exist 存在,但click错误]

    uiautomator定位页面元素是,定位存在的;但是click的时候,发现点的位置不对,(不知道是android系统的问题还是uiautomator的问题,初步怀疑是系统的问题)

  5. [uiautomator篇] 使用uiautomator需要导入uiautomator库

    1 修改依赖文件:build/gradle( 是在app目录下)而不是和app同级目录的build/gradle androidTestCompile 'com.android.support.tes ...

  6. [Uiautomator篇][2] UiDeviceAPI介绍

    1 https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html  http://www.cnb ...

  7. [UiAutomator篇][3] 打开音乐应用的测试脚本

    package qq.test; import android.content.Context; import android.content.Intent; import android.suppo ...

  8. [uiautomator篇]recent

    def Recent(self): d = Device('9410519008004c22098b') displayWidth = int(d.info.get("displayWidt ...

  9. [uiautomator篇] python uiautomatorDemo

    #coding=utf-8 """ @version: 1.0 @author: @prerequisite: based on Python 2.7 @usage: 1 ...

随机推荐

  1. poj1717

    两次记忆化搜索,第一次找最小的gap,第二次找最少的次数. #include <iostream> #include <cstdio> #include <cstring ...

  2. 【原创】微信公众号与HTML 5混合模式揭秘4——jssdk调用微信扫一扫

    微信公众号与HTML 5混合模式揭秘1——如何部署JSSDK 微信公众号与HTML 5混合模式揭秘2——分享手机相册中照片 微信公众号与HTML 5混合模式揭秘3——JSSDK获取地理位置   在JS ...

  3. 前端经典面试题 不经典不要star!

    前言 (以下内容为一个朋友所述)今天我想跟大家分享几个前端经典的面试题,为什么我突然想写这么一篇文章呢?今天我应公司要求去面试了下几位招聘者,然后又现场整不出几个难题,就搜了一下前端变态面试题! HA ...

  4. SVN几个重要的问题

    本文不是系统地讲解SVN,只是对SVN中一些重要的或者笔者一直混淆的问题做简要归纳. SVN的安装可以参考笔者的另一篇技术随笔<SVN安装使用小结>. 1.既然能够通过SVN得到“每一个版 ...

  5. Java中常见编码格式及乱码解决方法

    一:设置编码格式 1.JSP文件 charset=UTF-8 的作用是指定JSP向客户端输出的编码方式为"UTF-8",pageEncoding="UTF-8" ...

  6. 包含日志文件getshell

    包含日志文件getshell     一.包含日志文件漏洞利用概述           当我们没有上传点,并且也没有url_allow_include功能时,我们就可以考虑包含服务器的日志文件.    ...

  7. http协议参数详解

    整理一下http协议中的一些参数详解 截取了一个当前项目中的请求作为示例: Genaral:通用头 Request URL:当前请求的请求地址 Request Method:请求类型 get.post ...

  8. UVA 12549 Sentry Robots (最小点覆盖)

    这道题挺像hdu 5093 Battle ships的,不过那道题是要求最多放置的点数,而这道题是要求最小点覆盖. 顶点覆盖的定义是:在G中任意边至少有一个端点属于顶点集合S. 一个重要的位置有(x, ...

  9. UVA 10817 - Headmaster's Headache(三进制状压dp)

    题目:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&pag ...

  10. iPhone Tutorials

    http://www.raywenderlich.com/tutorials This site contains a ton of fun written tutorials – so many t ...