android espresso等待根层次结构获得焦点,第5个活动

时间:2019-05-10 19:13:43

标签: android android-espresso

因此,我正在尝试编写一些UI测试。这是我第一次使用意式浓缩咖啡。

我最终对所有工作方式感到满意。然后,一旦我尝试测试这些在层次结构中深5级的活动,每个浓缩咖啡功能都会开始失败。 它在此问题的底部给出了错误。

我在Google上仅看到了几次报告(包括堆栈溢出),但是其中大多数人都试图找到一条祝酒消息。我只是想对自己的活动进行任何控制。使用getCurrentActivity我什至可以在前台获取活动。但是每次我尝试onView(withId(R.id.some_id))。anyfunction时,都会在10秒后失败,并给出错误消息。

一些解决方案说使用以下代码

onView(withText("someText")).inRoot(withDecorView(not(is(getCurrentActivity().getWindow().getDecorView())))).check(matches(isDisplayed()));

这大概会搜索除活动以外的任何内容(意为吐司消息)。我在没有not()的情况下尝试了此方法,但10秒钟后仍然出现我的错误。该错误表明我的根永远不会受到关注,但是如果此方法将我的根设置为currentActivity,那怎么可能?

这似乎是某种特浓咖啡故障,其中特浓咖啡无法在5级深度的活动中看到任何控件(我在第一个活动中开始测试,而ui测试单击了各种按钮,直到达到该活动为止5级)。在测试开始时,我有3个用例,每个用例最终都在5级启动了一个不同的活动。即使每个活动都不同,我也在这三个活动中遇到了这个错误。

Waited for the root of the view hierarchy to have window focus and not request layout for 10 seconds. If you specified a non default root matcher, it may be picking a root that never takes focus. Root:
Root{application-window-token=android.view.ViewRootImpl$W@b32be4e, window-token=android.view.ViewRootImpl$W@b32be4e, has-window-focus=false, layout-params-type=1, layout-params-string={(0,0)(fillxfill) sim={adjust=resize} ty=BASE_APPLICATION wanim=0x10302fe
  fl=LAYOUT_IN_SCREEN LAYOUT_INSET_DECOR SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS
  pfl= remains{ 0x1000000 } naviIconColor=0}, decor-view-string=DecorView{id=-1, visibility=VISIBLE, width=1080, height=2220, 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, layout-params={(0,0)(fillxfill) sim={adjust=resize} ty=BASE_APPLICATION wanim=0x10302fe
  fl=LAYOUT_IN_SCREEN LAYOUT_INSET_DECOR SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS
  pfl= remains{ 0x1000000 } naviIconColor=0}, tag=null, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=3}}

我确信这是一种意式浓缩咖啡故障,但是如果有人可以说出它为什么会失败,请告诉我。 (顺便说一句,我已经尝试过thread.sleep,这没有什么区别。)

0 个答案:

没有答案