【问题标题】:Dismiss Alert Dialog in Android Espresso Test在 Android Espresso 测试中关闭警报对话框
【发布时间】:2019-04-10 16:57:55
【问题描述】:

我已经四处寻找解决方案,但找不到。我正在创建 Espresso 测试,并且需要在第一次显示特定活动屏幕时关闭出现在屏幕中间的警报对话框。对话框上没有按钮,因此用户需要单击框外的任意位置才能将其关闭。有谁知道我如何用 Espresso 做到这一点。我尝试单击底层屏幕上的布局,但 Espresso 未能在层次结构中找到该视图。

【问题讨论】:

    标签: android testing android-espresso


    【解决方案1】:

    使用onView(withText("alert_dialog_text")).perform(pressBack()); 这必须关闭您的对话框。

    【讨论】:

    • perform() 需要 ViewActionEspresso.pressBack() 返回 void。您想添加更多详细信息吗?
    • 使用:ViewActions.pressBack()
    【解决方案2】:

    首先检查是否显示警报对话框,如果是则执行 pressBack 点击事件

    onView(withText("OK")).inRoot(isDialog()).check(matches(isDisplayed())).perform(pressBack());
    

    用对话框中显示的文本替换确定文本

    【讨论】:

      【解决方案3】:

      Espresso 无法做到这一点。

      您需要在 Espresso 测试中使用 uiautomator,将其添加到项目的 gradle 中:

      androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
      

      你的对话框出现后,你可以点击屏幕任意坐标:

      UiDevice device = UiDevice.getInstance(getInstrumentation());
              device.click(x,y);
      

      这将关闭您的对话框

      【讨论】:

        【解决方案4】:

        正如 Ruben 在之前的答案中已经提到的,这看起来是一个需要考虑使用 UIAutomator 的问题。使用 Espresso,您只能在应用程序上下文中进行操作,而 UIAutomator 可让您控制测试设备。

        • 将依赖项添加到项目的 build.gradle

          dependencies {
              androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.0.0'
          }
          
        • 以下代码块检查屏幕中是否存在带有特定文本的对话框,然后通过按返回按钮将其关闭。

          UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
          UiObject uiObject = mDevice.findObject(new UiSelector().text("TEXT TO CHECK"));
          if (uiObject.exists())
          {
              mDevice.pressBack();
          }
          

          注意:此框架需要 Android 4.3(API 级别 18)或更高版本。

        【讨论】:

        • 使用AndroidX,依赖看起来像这样androidTestImplementation "androidx.test.uiautomator:uiautomator:2.2.0"
        【解决方案5】:

        我试过了,你只需要调用 pressBack() 。我有同样的情况,这对我帮助很大。如果这对您没有帮助,我们可以谈谈,我会帮助您。 祝你好运!

        【讨论】:

          猜你喜欢
          • 2018-07-22
          • 2018-04-11
          • 2015-04-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多