android-espresso - 在测试期间,如果我的应用程序中的操作打开了另一个应用程序(谷歌文档),是否有办法返回我的应用程序
问题描述
我的应用程序具有用户需要接受某些条款的功能,因此当点击按钮开始接受此项目时,会在谷歌文档中打开一个 pdf 以显示用户条款,然后他们必须点击设备或谷歌上的后退按钮文档。在 Espresso 中,我正在尝试构建一个遵循此路径的测试,但 Espresso 会锁定并且即使我插入了 pressBack 命令也不会离开谷歌文档。
我可以简单地恢复我的活动吗?一旦用户按下文档,他们必须在我的应用程序上点击“我接受”。
我考虑过使用存根意图,但不确定如何存根它,因为这只是为应用程序设置,以便在按下按钮时直接进入条款
解决方案
如果 Google Doc 是 WebView,则必须使用Espresso Web与 DOM 交互。
onWebView(withId(R.id.google_doc_web_view))
.withElement(findElement(Locator.ID, "back_button"))
.perform(webClick())
尽管如果此代码段无法退出 Google Doc,我会感到惊讶:
public static void pressBack() {
onView(isRoot()).perform(ViewActions.pressBack());
}
AndroidX 测试框架中还提供了UIAutomator
UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
mDevice.pressBack();
推荐阅读
- vba - 从文本文件 vba 中删除最后一行
- c++ - 有人可以解释在 C++ 中的字符串上使用 < 或 > 时发生了什么吗?
- spring-cloud - 将参数传递给 Spring Cloud 任务
- wordpress - WordPress 样式表版本控制 - 如何验证?
- java - 将子视图添加到 RelativeLayout
- thymeleaf - 百里香中的价值累加器
- docker - docker 卷是 2 路连接吗
- sql-server - 查询被 21 号 spid 阻止 (SQL Server 2014)
- c# - ConfigureAwait 的自定义代码检查
- r - 用该列中的随机值替换数据框中的 NA