2014-04-08 2 views
1

UiAutomator를 사용하여 안드로이드 애플 리케이션의 레이아웃 내부에 상대적으로 깊게 중첩 된 ImageView를 찾으려고합니다. (UiAutomatorViewer에서)복잡한 레이아웃의 UiAutomator 노드 찾기

UiObject nextButton = new UiObject(new UiSelector().className(className) 
                .index(2)); 
nextButton.waitForExists(20000); 
nextButton.clickAndWaitForNewWindow(); 

배치는 다음과 같습니다 : 이것은 내가 그것을 찾기 위해 사용하는 코드의 몸매는 여전 하구나 버전입니다

(0) FrameLayout 
    (0) LinearLayout 
    (0) FrameLayout 
     (0) RelativeLayout 
     (0) LinearLayout 
      (0) RelativeLayout 
      (0) RelativeLayout 
       (0) TextView 
      (1) RelativeLayout 
      (0) LinearLayout 
       (0) TextView 
       (1) TextView 
      (1) ImageView 
      (2) RelativeLayout 
      (0) ImageView 
      (1) ImageView 
      (3) LinearLayout 
      (0) LinearLayout 
       (0) ImageView 
       (1) ImageView 
       (2) ImageView  //<----- The one I'm after 
      (1) TextView 
여기서 문제가 UiAutomator 그것을 찾을 수 없다는 것입니다

. UiWatcher를 기동 해, 결국 UiObjectNotFoundException로 실패합니다. 길 아래로 몇 가지 다른 레이아웃을 지정하여 길을 가리켜 작동하도록 할 수는 있지만 최대한 멀리하는 것을 피하고 싶습니다. 이 ImageView를 찾는 더 좋은 방법이 있습니까? 저는 APK 16을 사용하고있어서 resourceId가 불행히도 문제가 해결되지 않았습니다.

답변

0

더 나은 하드웨어를 사용하는 것이 좋습니다. 느린 하드웨어에서는 UiAutomator가 주어진 시간과 상관없이 레이아웃을 반복 할 수없는 것처럼 보입니다.

0

Framelayout에 대한 개체를 만든 다음 ImageView에 FrameLayout 개체를 사용하여 다른 개체를 만들고 다른 인덱스가 없으므로 Index (2)를 지정하여 ImageView에 사용할 수 있습니다.