2013-07-23 1 views
2

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

... 참고 : 일부 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();