Android Espresso 2无法单击Nexus 9上的自定义对话框按钮

时间:2016-08-05 09:16:35

标签: android android-espresso

我有一个带按钮的自定义对话框。当我打开对话框时,我的Espresso2测试想要点击按钮。

onView(...).perform(click());

该测试适用于Nexus5仿真器,但在Nexus9仿真器中失败。

令人惊讶的是它适用于支持库中的AlertDialog。我追踪它,图书馆与我的实现有什么不同。 基本上我只是通过设置一个Window标志来实现它:

mWindow.setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

我不知道为什么这个标志是必需的以及它的作用。

我应该使用这个标志吗?

1 个答案:

答案 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()
}