Java 类android.support.test.uiautomator.UiWatcher 实例源码

项目:SunmiAuto    文件:TestUtils.java   
public static void uiwatchSuite(){
    device.registerWatcher("crash", new UiWatcher() {
        @Override
        public boolean checkForCondition() {
            UiObject2 crashObj = device.findObject(By.textEndsWith("已停止运行。"));
            Log.v("myautotest","enterWatch");
            if(crashObj != null){
                sleep(SHORT_SLEEP);
                device.findObject(By.text("确定")).clickAndWait(Until.newWindow(),LONG_WAIT);
                return true;
            }
            return false;
        }
    });

}
项目:SunmiAuto    文件:SunmiAppStore.java   
@Test
public void test008InstallAppFromHot() throws UiObjectNotFoundException, IOException {
    device.registerWatcher("downLoadFail", new UiWatcher() {
        @Override
        public boolean checkForCondition() {
            UiObject2 confirmObj = device.findObject(By.res("woyou.market:id/tv_confirm"));
            if(null != confirmObj){
                confirmObj.clickAndWait(Until.newWindow(),LONG_WAIT);
                return true;
            }
            return false;
        }
    });

    TestUtils.screenshotCap("appStoreHome");
    UiObject2 hotObj = device.findObject(By.res("woyou.market:id/tv_hot_all").text("全部"));
    hotObj.clickAndWait(Until.newWindow(), LONG_WAIT);
    TestUtils.screenshotCap("allHotAppsInterface");
    UiScrollable hotAllScroll = new UiScrollable(new UiSelector().resourceId("woyou.market:id/list_view"));
    hotAllScroll.scrollTextIntoView("安装");
    TestUtils.screenshotCap("ScrollToInstallableInterface");
    UiObject2 installObj = device.findObject(By.text("安装"));
    UiObject2 fullInstallObj = installObj.getParent().getParent();
    UiObject2 installNameObj = fullInstallObj.findObject(By.res("woyou.market:id/tv_name"));
    String name = installNameObj.getText();
    UiObject2 installObjnew =  fullInstallObj.getParent().findObject(By.text("安装"));
    installObjnew.click();
    TestUtils.screenshotCap("afterClickInstallBtn");
    boolean installSucc = installObjnew.wait(Until.textEquals("打开"),DOWNLOAD_WAIT);
    if(!installSucc){
        installObjnew.click();
        TestUtils.screenshotCap("installFailed");
        Assert.fail("下载安装了300秒,仍然未安装好,暂停了下载");
    }
    TestUtils.screenshotCap("afterInstalled");
    device.pressHome();
    Boolean b = TestUtils.findAppByText(name);
    TestUtils.screenshotCap("findInstalledApp");
    Assert.assertTrue("桌面上未找到\""+name+"\"这个应用",b);
}
项目:SunmiAuto    文件:SunmiAppStore_v3_3_15.java   
@Category(CategoryAppStoreTests_v3_3_15.class)
@Test
public void test008InstallAppFromHot() throws UiObjectNotFoundException, IOException {
    device.registerWatcher("downLoadFail", new UiWatcher() {
        @Override
        public boolean checkForCondition() {
            UiObject2 confirmObj = device.findObject(By.res("woyou.market:id/tv_confirm"));
            if(null != confirmObj){
                confirmObj.clickAndWait(Until.newWindow(),LONG_WAIT);
                return true;
            }
            return false;
        }
    });

    TestUtils.screenshotCap("appStoreHome");
    UiObject2 hotObj = device.findObject(By.res("woyou.market:id/tv_hot_all").text("全部"));
    hotObj.clickAndWait(Until.newWindow(), LONG_WAIT);
    TestUtils.screenshotCap("allHotAppsInterface");
    UiScrollable hotAllScroll = new UiScrollable(new UiSelector().resourceId("woyou.market:id/list_view"));
    hotAllScroll.scrollTextIntoView("安装");
    TestUtils.screenshotCap("ScrollToInstallableInterface");
    UiObject2 installObj = device.findObject(By.text("安装"));
    UiObject2 fullInstallObj = installObj.getParent().getParent();
    UiObject2 installNameObj = fullInstallObj.findObject(By.res("woyou.market:id/tv_name"));
    String name = installNameObj.getText();
    UiObject2 installObjnew =  fullInstallObj.getParent().findObject(By.text("安装"));
    installObjnew.click();
    TestUtils.screenshotCap("afterClickInstallBtn");
    boolean installSucc = installObjnew.wait(Until.textEquals("打开"),DOWNLOAD_WAIT);
    if(!installSucc){
        installObjnew.click();
        TestUtils.screenshotCap("installFailed");
        Assert.fail("下载安装了300秒,仍然未安装好,暂停了下载");
    }
    TestUtils.screenshotCap("afterInstalled");
    device.pressHome();
    Boolean b = TestUtils.findAppByText(name);
    TestUtils.screenshotCap("findInstalledApp");
    Assert.assertTrue("桌面上未找到\""+name+"\"这个应用",b);
}
项目:AppCrawler    文件:UiWatchers.java   
/**
 * We can use the UiDevice registerWatcher to register a small script to be
 * executed when the framework is waiting for a control to appear. Waiting may
 * be the cause of an unexpected dialog on the screen and it is the time when
 * the framework runs the registered watchers. This is a sample watcher
 * looking for ANR and crashes. it closes it and moves on. You should create
 * your own watchers and handle error logging properly for your type of tests.
 */
public void registerAnrAndCrashWatchers() {
    sDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());

    sDevice.registerWatcher("ANR", new UiWatcher() {
        @Override
        public boolean checkForCondition() {
            return handleAnr();
        }
    });

    sDevice.registerWatcher("ANR2", new UiWatcher() {
        @Override
        public boolean checkForCondition() {
            return handleAnr2();
        }
    });

    sDevice.registerWatcher("CRASH", new UiWatcher() {
        @Override
        public boolean checkForCondition() {
            return handleCrash();
        }
    });

    sDevice.registerWatcher("CRASH2", new UiWatcher() {
        @Override
        public boolean checkForCondition() {
            return handleCrash2();
        }
    });

    //sDevice.registerWatcher("COMMONDIALOG", new UiWatcher() {
    //    @Override
    //    public boolean checkForCondition() {
    //        return handleCommonDialog();
    //    }
    //});

    Log.i(TAG, "Registed GUI Exception watchers");
}