我有一个带按钮的自定义对话框。当我打开对话框时,我的Espresso2测试想要点击按钮。
onView(...).perform(click());
该测试适用于Nexus5仿真器,但在Nexus9仿真器中失败。
令人惊讶的是它适用于支持库中的AlertDialog。我追踪它,图书馆与我的实现有什么不同。 基本上我只是通过设置一个Window标志来实现它:
mWindow.setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
我不知道为什么这个标志是必需的以及它的作用。
我应该使用这个标志吗?
答案 0 :(得分:0)
如果将UI-Automator与AndroidX结合使用,则可以找到对话框和按钮。
这是gradle依赖代码。
dependencies {
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}
您可以使用此代码访问按钮。
这是Kotlin代码。
val button = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
.findObject(
UiSelector().text(
activityTestRule
.activity
.getString(R.string.button)
.toUpperCase()
)
)
if (button.exists() && button.isEnabled) {
button.click()
}