import com.android.uiautomator.core.UiObject; import com.android.uiautomator.core.UiObjectNotFoundException; import com.android.uiautomator.core.UiSelector; import com.android.uiautomator.core.UiWatcher; import com.android.uiautomator.testrunner.UiAutomatorTestCase; 지금은 UiWatcher 작동 방식을 이해 좋아Android 용 UiWatcher 예제 UIAutomator가 작동하지 않습니다.
public class uiWatcherDemo extends UiAutomatorTestCase { private static final String NOINTERNET_STRING = "InternetWatcher"; public void testWatcherDemoTestExample() throws UiObjectNotFoundException { // Define watcher and register // UiWatcher internetWatcher = new UiWatcher() { @Override public boolean checkForCondition() { UiObject noConnObj = new UiObject(new UiSelector().text("No connection")); if(noConnObj.exists()) { UiObject retryButton = new UiObject(new UiSelector().className("android.widget.Button").text("Retry")); try { retryButton.click(); try { Thread.sleep(3000L); } catch(Exception e) {} getUiDevice().pressHome(); } catch (UiObjectNotFoundException e) { e.printStackTrace(); } } return false; } }; getUiDevice().registerWatcher(NOINTERNET_STRING, internetWatcher); getUiDevice().runWatchers(); // app test code // getUiDevice().pressHome(); UiObject allAppsButton = new UiObject(new UiSelector().description("Apps")); allAppsButton.clickAndWaitForNewWindow(); UiObject appsTab = new UiObject(new UiSelector().description("Shop")); appsTab.clickAndWaitForNewWindow(); } }
2
A
답변
2
... 참고 : 일부 API가 재시도 모드에있을 때 UiWatcher 만 호출합니다. 즉, 일부 API 호출이 UI에서 요소를 찾을 수없는 경우 UI 라이브러리가 등록 된 감시자를 자동으로 호출합니다.
인터넷 연결이 꺼져있을 때 위의 예와 같이 Google Play를 엽니 다. 이제 감시자가 살아 있고 위의 상태를 확인하고 클릭하여 다시 시도하고 홈페이지로 돌아갑니다. 코드 끝에서이 두 줄을 추가하면 재시도 모드가되고 등록 된 감시자가 작동하는 것을 볼 수 있습니다.
// below line will be in retry mode and Watcher will be invoke automatically //
UiObject contact = new UiObject(new UiSelector().text("Contacts"));
contact.click();