//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. 【转】java的动态代理机制详解

    java的动态代理机制详解   在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们 ...

  2. Ubuntu 16.04 not a com32r image

    安装Ubuntu16.04,出现题目中的错误,解决方法如下 重点:开机后按TAB键,在随后出现的命令行提示符中输入live 既可,之后的过程就是正常的过程了!

  3. Android LitePal介绍与使用说明

    LitePal for Android LitePal是一个Android开源库,它使开发者使用SQLite数据库变得非常容易. 你可以不用写一句SQL语句就可以完成大部分数据库操作,包括创建表,更新 ...

  4. 屏幕旋转时 Activity 的生命周期 —— 测试与结论

    关于 Android 手机横竖屏切换时 Activity 的生命周期问题,网上有很多相似的文章,大多数都是说明在竖屏切换横屏时 Activity 会重启一次,而在横屏切换竖屏时 Activity 会重 ...

  5. Power BI 连接到 Azure 账单,自动生成报表,可刷新

    开始研究Azure官网等,提供的链接都是错误的,躺了很大的一个坑,配置后根本无法获取账单信息,经过多次查询找到了方向,过来记录一下: 错误的地址(应该是适用于全球版,国内版无法这样获取): https ...

  6. IOS与android

    Android和iOS那个好?应该先往哪个上面投入资源?多次被人问到此类问题,笔者刚好自己的项目也需要考虑iOS版本.就索性进行了一番调研,于是有了本文(本次不讨论越狱的iOS) 首先从情感上,你喜欢 ...

  7. restful十项规范

    1.协议 API与用户的通信都是通过HTTPS协议进行的 2.域名 应尽量将API部署在专有域名下:https://api.example.com 如果确定API很简单,不会有什么扩展,则可以放在主域 ...

  8. SQL 转换函数

    1.字符串与字符串相加 字符串相加   得到的是拼接成一列的字符串类型 例如 select name+code from car       name是nvarchar  code也是nvarchar ...

  9. (转)SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合

    http://blog.csdn.net/yerenyuan_pku/article/details/72231763 之前我整合了Spring和MyBatis这两个框架,不会的可以看我的文章MyBa ...

  10. 【转】SpringBoot 2.0.0新版和SpringBoot1.5.2版本中Tomcat配置的差别

    https://blog.csdn.net/wd2014610/article/details/79587161 2018年春SpringBoot 2.0.0 新版本有了很多新的改变,其中Tomcat ...