2016-09-12 13 views
5

Trong thử nghiệm Android Ui, tôi muốn bấm vào một mục spinner trong một hộp thoại, nhưng nó bật lên với lỗi này:thử nghiệm Android: Chờ đợi cho thư mục gốc của hệ thống phân cấp nhằm có cửa sổ tập trung

va.lang.RuntimeException: Waited for the root of the view hierarchy to have window focus and not be requesting layout for over 10 seconds. If you specified a non default root matcher, it may be picking a root that never takes focus. Otherwise, something is seriously wrong. Selected Root: 
Root{[email protected], [email protected], has-window-focus=false, layout-params-type=1, layout-params-string=WM.LayoutParams{(0,0)(fillxfill) sim=#10 ty=1 fl=#81810100 pfl=0x8 wanim=0x1030461 surfaceInsets=Rect(0, 0 - 0, 0) mwfl=0x0}, decor-view-string=MultiPhoneDecorView{id=-1, visibility=VISIBLE, width=1600, height=2560, has-focus=true, has-focusable=true, has-window-focus=false, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=1}} 
. All Roots: 
Root{[email protected], [email protected], has-window-focus=true, layout-params-type=1002, layout-params-string=WM.LayoutParams{(310,600)(722x480) gr=#10000033 sim=#1 ty=1002 fl=#1860200 fmt=-3 wanim=0x10302db surfaceInsets=Rect(0, 0 - 0, 0) mwfl=0x0}, decor-view-string=PopupViewContainer{id=-1, visibility=VISIBLE, width=722, height=480, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=1}} 
Root{[email protected], [email protected], has-window-focus=false, layout-params-type=2, layout-params-string=WM.LayoutParams{(0,0)(wrapxwrap) gr=#11 sim=#20 ty=2 fl=#1800002 pfl=0x8 fmt=-3 wanim=0x1030462 surfaceInsets=Rect(0, 0 - 0, 0) mwfl=0x10}, decor-view-string=DecorView{id=-1, visibility=VISIBLE, width=1136, height=1058, has-focus=true, has-focusable=true, has-window-focus=false, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=1}} 
Root{[email protected], [email protected], has-window-focus=false, layout-params-type=1, layout-params-string=WM.LayoutParams{(0,0)(fillxfill) sim=#10 ty=1 fl=#81810100 pfl=0x8 wanim=0x1030461 surfaceInsets=Rect(0, 0 - 0, 0) mwfl=0x0}, decor-view-string=MultiPhoneDecorView{id=-1, visibility=VISIBLE, width=1600, height=2560, has-focus=true, has-focusable=true, has-window-focus=false, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=1}} 
at android.support.test.espresso.base.RootViewPicker.get(RootViewPicker.java:99) 
at android.support.test.espresso.ViewInteractionModule.provideRootView(ViewInteractionModule.java:69) 
at android.support.test.espresso.ViewInteractionModule_ProvideRootViewFactory.get(ViewInteractionModule_ProvideRootViewFactory.java:23) 
at android.support.test.espresso.ViewInteractionModule_ProvideRootViewFactory.get(ViewInteractionModule_ProvideRootViewFactory.java:9) 
at android.support.test.espresso.base.ViewFinderImpl.getView(ViewFinderImpl.java:68) 
at android.support.test.espresso.ViewInteraction$1.run(ViewInteraction.java:120) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:145) 
at android.app.ActivityThread.main(ActivityThread.java:6117) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

tôi đã cố gắng

onData(allOf(is(instanceOf(String.class)),containsString("A4"))).inRoot(isPlatformPopup()).perform(click()); 

onView(withText(containsString("A4"))).inRoot(isFocusable()).check(matches(isDisplayed())); 

0.123.
onView(withText(containsString("A4"))).inRoot(withDecorView(not(getActivity().getWindow().getDecorView()))).check(matches(isDisplayed())); 

nhưng không ai trong số họ hoạt động ... Bất cứ ai có thể cho tôi biết làm thế nào để có được rễ ralavant xin vui lòng?

Trả lời

1

Tôi đã gặp lỗi tương tự, khi tôi sử dụng Spinner bên trong DialogFragment. Đây là mã duy nhất đang làm việc cho tôi:

onView(withText(containsString("A4"))).inRoot(isPlatformPopup()).check(matches(isDisplayed())); 
+0

này giải quyết vấn đề của tôi khi sử dụng Spinner bên trong 'AlertDialog'. –

1

Chỉ trong trường hợp nếu nó xảy ra với Travis xây dựng của bất kỳ ai (với chính xác cùng log). Vui lòng kiểm tra this.

Đã chính xác cùng một sự cố và được giải quyết bằng cách tạo avd với phiên bản đích thấp hơn (19).

Những gì tôi đã cố gắng và đã không làm việc:

  • Thêm một phương pháp unlockScreen()@Before để thử nghiệm giao diện người dùng.

  • Thêm/xóa adb shell input keyevent 82 &.

  • Xóa emulator tùy chọn lệnh khác nhau -no-skin hoặc -no-audio hoặc -no-window. Bây giờ tôi có -no-window ở đó là tốt.

Cuối cùng, thay đổi từ

echo no | android create avd --force -n test -t android-24 --abi armeabi-v7a 

để

echo no | android create avd --force -n test -t android-19 --abi armeabi-v7a 

hoàn toàn giải quyết vấn đề này.

0

chỉ cần cập nhật các công cụ xây dựng trong travis.yml:

  • Trong tập tin này .travis.yml: bạn nên có điều này before_install: - echo yes | android update sdk --all --filter build-tools-26.0.1 --no-ui --force
  • như wel này trong .travis.yml:
script: echo no | android create avd --force -n test -t android-22 
--abi armeabi-v7a emulator -avd test -no-audio -no-window & 
android-wait-for-emulator 
adb shell settings put global window_animation_scale 0 & 
adb shell settings put global transition_animation_scale 0 & 
adb shell settings put global animator_duration_scale 0 & 
adb shell input keyevent 82 & 
Các vấn đề liên quan