isDisplayed和withEffectiveVisibility有什么区别?
onView(withText("Much Dagger")).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));
onView(withText("Much Dagger")).check(matches(ViewMatchers.isDisplayed());
isDisplayed和withEffectiveVisibility有什么区别?
onView(withText("Much Dagger")).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));
onView(withText("Much Dagger")).check(matches(ViewMatchers.isDisplayed());
isDisplayed()
验证目标视图是否出现在屏幕可见矩形内。然而,使用它有一个注意点。根据官方文档,isDisplayed()
-
但实际上,这并不总是有效的。如果目标视图在可见矩形中的可见比例超过80%,则只有选择部分显示的视图(例如:视图的完整高度/宽度大于可见矩形的高度/宽度)。
isDisplayed()
有效。但如果您的视图的可见性低于该阈值,则需要使用isDisplayingAtLeast()
。此方法采用您认为视图在可见矩形中占据的自定义百分比量。如果您的视图不在可见矩形中(0%可见)或在可见矩形中完全可见(100%可见),则此方法无效。如果您想确保视图完全出现在可见矩形中,则可以使用isCompletelyDisplayed)
。isDisplayed()
或其他其变体。withEffectiveVisibility()
的目的。它基本上确保目标视图具有所需的可见性属性设置。它可以验证三种可见性状态-VISIBLE
,INVISIBLE
和GONE
。请记住,此验证不需要将视图放置在可见矩形中。视图只需要出现在视图层次结构中。当充气布局时,它会创建一个ViewTree
,您的视图可以位于该树中的任何位置(即在任何节点中)。此方法验证它们在树中拥有的可见状态。