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; } }); }
@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); }
@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); }
/** * 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"); }