zoukankan      html  css  js  c++  java
  • [uiautomator篇] UiWatcher的使用

      1 //package com.softwinner.pad.mark3d;
      2 package com.softwinner.performance.benchmark.mark3d;
      3 
      4 import android.content.Context;
      5 import android.content.Intent;
      6 import android.os.RemoteException;
      7 import android.support.test.InstrumentationRegistry;
      8 import android.support.test.uiautomator.By;
      9 import android.support.test.uiautomator.UiDevice;
     10 import android.support.test.uiautomator.UiObject;
     11 import android.support.test.uiautomator.UiSelector;
     12 import android.support.test.uiautomator.UiWatcher;
     13 import android.support.test.uiautomator.Until;
     14 import android.util.Log;
     15 
     16 import com.softwinner.performance.filecopyspeed.TestBase;
     17 
     18 import org.junit.After;
     19 import org.junit.Before;
     20 import org.junit.Test;
     21 
     22 import static com.softwinner.performance.benchmark.mark3d.UiAssistant.LAUNCH_TIMEOUT;
     23 import static junit.framework.Assert.assertTrue;
     24 import static org.hamcrest.core.IsNull.notNullValue;
     25 import static org.junit.Assert.assertThat;
     26 
     27 /**
     28 * mobilexprt2015 performance test
     29 * @author liuzhipeng
     30 */
     31 
     32 public class MobileXPRTTest {
     33 
     34 private static final String packageName = "com.mobilexprt2015";
     35 private String[] path = {
     36 "/sdcard/performance/mobilexprt/screen/",
     37 "/sdcard/performance/mobilexprt/log/"};
     38 
     39 private String logTag = "mobilexprttest";
     40 private UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
     41 private UiAssistant cAssistant = new UiAssistant(mDevice,path);
     42 
     43 private String startButton = "com.mobilexprt2015:id/customize_screen_start_tests";
     44 private String testingObject = "com.mobilexprt2015:id/tv_next_scenario";
     45 private String testendObject = "com.mobilexprt2015:id/group_name";
     46 
     47 
     48 @Before
     49 public void setUp() throws Exception {
     50 cAssistant.setup(path,logTag);
     51 this.watcherEndTheCall();
     52 }
     53 
     54 /**
     55 * test mobilexprt performance
     56 * @author liuzhipeng
     57 * @return null
     58 * @throws Exception
     59 */
     60 @Test
     61 public void testAI030004MobileXPRT() throws Exception
     62 {
     63 int TestNumber = 0;
     64 while(TestNumber < 1){
     65 String assisStr = "[TestNumber_"+TestNumber+"]";
     66 openApplication(packageName);
     67 Log.i(logTag,assisStr+"open mobilexprt ");
     68 Thread.sleep(5000);
     69 // UiObject startTest = mDevice.findObject(new UiSelector().
     70 // resourceId(startButton));
     71 // assertTrue("not found start test button",startTest.exists());
     72 // startTest.clickAndWaitForNewWindow();
     73 // Log.i(logTag,assisStr+"click start test button");
     74 // assertTrue("step[1] fail",cAssistant.WaitforUnitObjectExist(0,testingObject,5,100));
     75 // Log.i(logTag,assisStr+"testing page["+testingObject+ "]exist");
     76 // Thread.sleep(1000*60*1);
     77 // assertTrue("step[2] fail",cAssistant.WaitforUnitObjectExist(0,testendObject,17*60,500));
     78 // Log.i(logTag,assisStr+"test end page["+testendObject+"]exist");
     79 // cAssistant.takescreen("mobilexprt[TestNumber_"+TestNumber +"]End",
     80 // "[TestNumber_"+TestNumber +"]mobilexprtScore");
     81 // Log.i(logTag,assisStr+"test end,and takescreen");
     82 cAssistant.QuitApplication(packageName);
     83 Log.i(logTag,assisStr+"quit mobilexprt");
     84 Thread.sleep(1000*10);
     85 TestNumber++;
     86 
     87 }
     88 
     89 }
     90 public void openApplication(String packName) throws RemoteException {
     91 mDevice.wakeUp();
     92 /* Start from the home screen*/
     93 mDevice.pressHome();
     94 
     95 final String launcherPackage = mDevice.getLauncherPackageName();
     96 assertThat(launcherPackage,notNullValue());
     97 mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
     98 LAUNCH_TIMEOUT);
     99 
    100 // launch the app
    101 Context context = InstrumentationRegistry.getContext();
    102 final Intent intent = context.getPackageManager()
    103 .getLaunchIntentForPackage(packName);
    104 // Clear out any previous instances
    105 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    106 context.startActivity(intent);
    107 
    108 // Wait for the app to appear
    109 mDevice.wait(Until.hasObject(By.pkg(packName).depth(0)),
    110 LAUNCH_TIMEOUT);
    111 }
    112 private void watcherEndTheCall(){
    113 // UiDevice 动作不会触发监听器
    114 // runWatcher是在查找控件失败时会调用,当然你也可以自己调用
    115 // findAccessibilityNodeInfo里面会调用runWatcher
    116 // UiObject.findAccessibilityNodeInfo,查找控件会用到
    117 mDevice.registerWatcher("endCallWatcher", new UiWatcher() {
    118 UiObject incomingCall = mDevice.findObject(new UiSelector()
    119 .resourceId(""));
    120 @Override
    121 public boolean checkForCondition() {
    122 System.out.println("endCallWatcher running");
    123 if(incomingCall.exists()){
    124 try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}
    125 System.out.println("endCall success");
    126 return true;
    127 }
    128 System.out.println("endCall fail");
    129 return false;
    130 }
    131 });
    132 }
    133 @After
    134 public void tearDown() throws Exception {
    135 Log.i(logTag,"is triggered :"+ mDevice.hasWatcherTriggered("endCallWatcher"));
    136 mDevice.removeWatcher("endCallWatcher");
    137 
    138 }
    139 }
  • 相关阅读:
    poj1580
    poj1607
    poj1313
    poj1314
    c语言之extern和static
    C笔记(一)
    搭建Linux高可用性集群(第一天)
    利用回调函数实现泛型算法
    关于SQL server中的 identity
    SQL(一)
  • 原文地址:https://www.cnblogs.com/liuzhipenglove/p/7111549.html
Copyright © 2011-2022 走看看