如何与 Espresso 中的 alertdialog 交互?
Posted
技术标签:
【中文标题】如何与 Espresso 中的 alertdialog 交互?【英文标题】:How to interact with alertdialog in Espresso? 【发布时间】:2020-03-02 13:34:25 【问题描述】:我有一个测试,其中有一个 Alertdialog,其中有一个“输入”字段和按钮“取消”(id 是 button2)和“Ok”(id 是 button1)。首先,我必须在字段中输入值“1234”,然后单击“确定”按钮。但它对我不起作用,测试失败。
onView(withId(R.id.input)).perform(typeText("1234"));
closeSoftKeyboard();
click(R.id.button1);
Thread.sleep(5000);
【问题讨论】:
【参考方案1】:你应该使用isDialog()
RootMatcher:
onView(allOf(
isDescendantOfA(withId(R.id.input)),
isAssignableFrom(EditText.class)))
.inRoot(isDialog())
.perform(typeText("1234"))
.perform(closeSoftKeyboard());
onView(withText("Ok"))
.inRoot(isDialog())
.check(matches(isDisplayed()))
.perform(click());
Thread.sleep(5000);
【讨论】:
尝试在确定按钮上使用withText
。查看更新的答案
过去,给出这样的错误“Cannot resolve method 'click()'”
会不会是closeSoftKeyboard();
隐藏了对话框?尝试不使用它或将其作为输入的操作移动
在视图 'with id: by.belinvestbank.test:id/input' 上执行 'type text(1234)' 时出错。
你在使用TextInputLayout吗?尝试检查 EditText
类型的后代。查看更新的答案以上是关于如何与 Espresso 中的 alertdialog 交互?的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 2.2 中的 Espresso 测试录制功能
如何在 Espresso 中重新运行失败的测试? - 头脑风暴
Espresso 如何点击一个 ImageView 放置在 listview 的第一项?