Espresso 测试无法处理 Pickers

Posted

技术标签:

【中文标题】Espresso 测试无法处理 Pickers【英文标题】:Espresso test cannot deal with Pickers 【发布时间】:2017-03-12 15:19:18 【问题描述】:

Test 中有一个下拉列表。录音机点击打开选项下拉菜单。但是随后单击以选择一个失败并出现以下错误:

Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints:
at least 90 percent of the view's area is displayed to the user.

这个问题android Espresso error on button click 涉及约束,但它建议简单地使用 isCompletelyDisplayed() 不起作用。

【问题讨论】:

澄清一下:“picker”或“dropdown”是指微调器?你的微调器元素看起来如何?有多少可供选择? 这是一个简单的下拉菜单,不是选择器。是的,只是一个微调器。 【参考方案1】:

是的,当您单击的视图处于使其对用户不可见的滚动位置时,就会发生这种情况。

只需使用:

onView(withId(whatever)).perform(scrollTo(), click())

我假设您的视图可以使用 onview 选择器作为目标。

【讨论】:

认为录音机是一种了解 Espresso 的方式是我的第一个错误。现在在这方面取得了一些进展。您的回答没有解决这个问题的内容,因为这个微调器的所有选择都显示在点击时,但我也想知道如何做这件事,所以 +1。谢谢。 但我的意思是,单击打开微调器的按钮,然后将视图定位在微调器上并执行滚动并单击它 我知道你的意思。我所说的是当点击注册时,值会出现并且不需要滚动。 90% 的事情发生在微调器本身的点击上。 如果微调器点击触发了 90% 的错误,那么对该点击也使用 scrollTo 操作 我会重新讨论。我终于得到了一个相对干净的测试工作,这很好。当然,放弃了录音机让我到达那里的所有希望。现在,我只是定义了一个内联 ViewAction。

以上是关于Espresso 测试无法处理 Pickers的主要内容,如果未能解决你的问题,请参考以下文章

从 Maps Intent espresso 回到活动 - UI 测试

如何使用 Espresso 测试特定活动?

使用 Espresso 和 Spoon 运行特定测试

Android espresso 无法导航到其他 Fragment?

回到地图意图espresso - UI测试的活动

Espresso 无法点击显示的视图