我试图找到一个对话框取消按钮,并在Espresso UI测试中将其按下,但不能。
这是我的代码。
onView(withId(R.id.dialog_close_button)).check(matches(isDisplayed()))
什么是最佳解决方案?
请发表您的意见。
如果是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重复,则会抱怨
如果将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()
}