//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. Oracle/MySql/SQL Sqlserver分页查询

    简述 简单概括一下Oracle,MySql,SQL Sqlserver这三个数据库的分页查询语句. Oracle分页查询 例:每页显示两条数据,现在要查询第二页,也就是第3-4条数据. 查询语句: s ...

  2. 一步步实现自己的ORM(四)

    通过前3章文章,大致对ORM有一定的了解,但也存在效率低下(大量用了反射)和重复代码,今天我们要对ORM进行优化. 具体流程如下: 我们优化的第一个就是减少反射调用,我的思路是定义一个Mapping, ...

  3. kafka系列一:单节点伪分布式集群搭建

    Kafka集群搭建分为单节点的伪分布式集群和多节点的分布式集群两种,首先来看一下单节点伪分布式集群安装.单节点伪分布式集群是指集群由一台ZooKeeper服务器和一台Kafka broker服务器组成 ...

  4. THML5新增功能

    HTML5新增功能 1.语义化标记: 1)article:article标签装载显示一个独立的文章内容.例如一篇完整的论坛帖子,一则网站新闻,一篇博客文章等等,一个用户评论等等 artilce可以嵌套 ...

  5. 使用POI创建word表格合并单元格兼容wps

    poi创建word表格合并单元格代码如下: /** * @Description: 跨列合并 */ public void mergeCellsHorizontal(XWPFTable table, ...

  6. 正则表达说明—Pattern API

    字符类 [abc]                              匹配a.b.c任意一个字符 [^abc]   匹配除了a.b.c外的任意一个字符 [a-zA-Z]     匹配a-z或A ...

  7. HDU 5469 Antonidas (树形DP,暴力)

    题意: 给一棵n节点的树图,每个点都是一个小写字母,要求找到两个点(a,b),从a->b的路径上形成了一个字符串为s.给出s,问是否存在这样的点对. 思路: 考虑一个点,要么从该点出发,要么在该 ...

  8. CentOS7——防火墙设置

    1.查看firewall服务状态 systemctl status firewalld 2.查看firewall的状态firewall-cmd --state 3.开启.重启.关闭.firewalld ...

  9. readystatechange

    // alternative to DOMContentLoaded document.onreadystatechange = function () { if (document.readySta ...

  10. Android之通过adb shell 模拟器 error: more than one device and emulator 改ip dns

    error: more than one device and emulator 如果出现上面那种情况 请关闭  ide 输入下面的  再次重新启动 模拟器 如果实际上只有一个设备或模拟器,并且查到有 ...