Android 浓缩咖啡,找到对话,然后关闭它
我试图在Espresso UI测试中找到一个对话框取消按钮并按下它,但我做不到 这是我的密码Android 浓缩咖啡,找到对话,然后关闭它,android,android-espresso,android-dialogfragment,android-dialog,ui-testing,Android,Android Espresso,Android Dialogfragment,Android Dialog,Ui Testing,我试图在Espresso UI测试中找到一个对话框取消按钮并按下它,但我做不到 这是我的密码 onView(withId(R.id.dialog_close_button)).check(matches(isDisplayed())) 最好的解决方案是什么 请发表您的意见。如果您将UI自动机与AndroidX一起使用,您可以找到对话框和按钮 这是一个渐变依赖代码 dependencies { androidTestImplementation 'androidx.test.uiauto
onView(withId(R.id.dialog_close_button)).check(matches(isDisplayed()))
最好的解决方案是什么
请发表您的意见。如果您将UI自动机与AndroidX一起使用,您可以找到对话框和按钮 这是一个渐变依赖代码
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()
}
如果它是一个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()))
如果你不想要安卓系统,只需更换你的id就可以了,记住如果你有重复的id,它会抱怨
编辑
我建议您使用,这样您就可以找到屏幕上每个组件的ID,这样您就可以用旧答案替换它
因此,这些步骤是:
工具
布局检查器
>选择处理器onView.withId中替换它(这里是\u ID).
isDialog()
,以匹配作为对话框的根目录(即不是当前恢复的活动的窗口)
如果你想像标题中所说的那样关闭对话框,也不要忘记点击该按钮
使用此代码:
onView(withId(R.id.dialog_close_button))
.inRoot(isDialog())
.check(matches(isDisplayed()))
.perform(click());
您可以发布对话框的xml吗?实现“androidx.biometric:biometric:1.0.0-beta02”请查看此博客,了解具体的对话框。该对话框是一种特殊情况,如biometric dialog,此代码无法到达对话框。您可以发布您的xml或对话框的图片吗?哦,我明白了,让我编辑我的答案,我从来没有这样做过,但我们可以看看我的编辑是否能帮助您解决这个问题!:)这方面有什么改进吗?我要改进我的答案吗@亨俊尧