首页 > 解决方案 > 在测试期间,如果我的应用程序中的操作打开了另一个应用程序(谷歌文档),是否有办法返回我的应用程序

问题描述

我的应用程序具有用户需要接受某些条款的功能,因此当点击按钮开始接受此项目时,会在谷歌文档中打开一个 pdf 以显示用户条款,然后他们必须点击设备或谷歌上的后退按钮文档。在 Espresso 中,我正在尝试构建一个遵循此路径的测试,但 Espresso 会锁定并且即使我插入了 pressBack 命令也不会离开谷歌文档。

我可以简单地恢复我的活动吗?一旦用户按下文档,他们必须在我的应用程序上点击“我接受”。

我考虑过使用存根意图,但不确定如何存根它,因为这只是为应用程序设置,以便在按下按钮时直接进入条款

标签: android-espresso

解决方案


如果 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();

推荐阅读