使用 Espresso 进行 运行 UI 测试,如何在 Material 设计芯片布局中引用关闭图标?
Using Espresso to Run UI Tests, How do you reference the Close Icon in a Material Design Chip Layout?
通常情况下,如果我们想使用 espresso 按下按钮,您需要等待带有 ID 的视图加载。然后执行点击。 Material 设计芯片可让您定义一个关闭图标并在关闭图标上放置一个侦听器。但是,这意味着 closeIcon 没有可直接引用的 ID,并在布局检查器中显示为 Chip 的一部分。
onView(withId(R.id.chip)).perform(click())
你会怎么用espresso找到关闭的icon?
用 espresso 表达式没有简单的方法,但在摆弄它之后,似乎 Material Chip 公开了一个 performCloseIconClick() 函数,我最终将其插入到自定义视图操作中。希望这对你们中的一些人有所帮助。
class ClickCloseIconAction : ViewAction {
override fun getConstraints(): Matcher<View> {
return ViewMatchers.isAssignableFrom(Chip::class.java)
}
override fun getDescription(): String {
return "click drawable "
}
override fun perform(uiController: UiController, view: View) {
val chip = view as Chip//we matched
chip.performCloseIconClick()
}
}
这意味着你可以这样称呼它
onView(withId(R.id.chip)).perform(ClickCloseIconAction())
通常情况下,如果我们想使用 espresso 按下按钮,您需要等待带有 ID 的视图加载。然后执行点击。 Material 设计芯片可让您定义一个关闭图标并在关闭图标上放置一个侦听器。但是,这意味着 closeIcon 没有可直接引用的 ID,并在布局检查器中显示为 Chip 的一部分。
onView(withId(R.id.chip)).perform(click())
你会怎么用espresso找到关闭的icon?
用 espresso 表达式没有简单的方法,但在摆弄它之后,似乎 Material Chip 公开了一个 performCloseIconClick() 函数,我最终将其插入到自定义视图操作中。希望这对你们中的一些人有所帮助。
class ClickCloseIconAction : ViewAction {
override fun getConstraints(): Matcher<View> {
return ViewMatchers.isAssignableFrom(Chip::class.java)
}
override fun getDescription(): String {
return "click drawable "
}
override fun perform(uiController: UiController, view: View) {
val chip = view as Chip//we matched
chip.performCloseIconClick()
}
}
这意味着你可以这样称呼它
onView(withId(R.id.chip)).perform(ClickCloseIconAction())