Espresso,查找对话框并关闭它

问题描述 投票:0回答:2

我试图找到一个对话框取消按钮,并在Espresso UI测试中将其按下,但不能。

这是我的代码。

onView(withId(R.id.dialog_close_button)).check(matches(isDisplayed()))

什么是最佳解决方案?

请发表您的意见。

android android-espresso android-dialogfragment android-dialog ui-testing
2个回答
1
投票

如果是Android对话框,并且使用两个按钮,则可以使用以下方法找到视图:

onView.withId(android.R.id.button1).perform(ViewActions.click()) //Click on accept button
onView.withId(android.R.id.button2).perform(ViewActions.click()) //Click on cancel button

如果要测试它们是否可见,则要使用:

assert onView.withId(android.R.id.button1).check(matches(ViewMatchers.isDisplayed()))

然后,如果您不想使用android系统,只需为您的ID替换ID,它就可以使用,请记住如果您有ID重复,则会抱怨


0
投票

如果将UI-Automator与AndroidX一起使用,则可以找到对话框和按钮。

这是gradle依赖代码。

dependencies {
    androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}

您可以使用此代码访问按钮。

这是科特林代码。

val cancel = activityTestRule.activity.getString(R.string.dialog_cancel_button)
val button = UiDevice
    .getInstance(InstrumentationRegistry.getInstrumentation())
    .findObject(
        UiSelector()
            .text(cancel.toUpperCase())
            .text(cancel)
    )
if (button.exists() && button.isEnabled) {
    button.click()
}
© www.soinside.com 2019 - 2024. All rights reserved.