在Android Espresso测试中关闭警报对话框

在Android Espresso测试中关闭警报对话框,android,testing,android-espresso,Android,Testing,Android Espresso,我四处寻找解决方案,但找不到。我正在创建一个意大利浓咖啡测试,需要在第一次显示一个特定的活动屏幕时,删除屏幕中间出现的警告对话框。对话框上没有按钮,因此用户需要单击对话框外的任何位置来关闭对话框。有人知道我怎么用浓缩咖啡做这个吗。我尝试单击底层屏幕上的布局,但Espresso无法表示在层次结构中找不到视图。使用onView(带文本(“警报对话框文本”)。执行(按Back())这必须关闭您的对话框。我已经尝试过了,您只需回拨pressBack()。我也遇到过同样的情况,这对我帮助很大。如果这对你没

我四处寻找解决方案,但找不到。我正在创建一个意大利浓咖啡测试,需要在第一次显示一个特定的活动屏幕时,删除屏幕中间出现的警告对话框。对话框上没有按钮,因此用户需要单击对话框外的任何位置来关闭对话框。有人知道我怎么用浓缩咖啡做这个吗。我尝试单击底层屏幕上的布局,但Espresso无法表示在层次结构中找不到视图。

使用
onView(带文本(“警报对话框文本”)。执行(按Back())这必须关闭您的对话框。

我已经尝试过了,您只需回拨pressBack()。我也遇到过同样的情况,这对我帮助很大。如果这对你没有帮助,我们可以谈谈,我会帮助你。
祝你好运

浓缩咖啡做不到这一点

您需要在浓缩咖啡测试中使用uiautomator,将此添加到项目的分数中:

androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
对话框出现后,您可以单击屏幕上的任意坐标:

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

这将关闭您的对话框

首先检查是否显示警报对话框,如果是,则执行“返回”单击事件

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

用前面提到的Ruben已经提到的对话框替换OK文本中的文本,这看起来是一个需要考虑的问题,使用<强> uiAutoPux/Stult>。使用浓缩咖啡,您只能在应用程序上下文中操作,而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)或更高版本


perform()
需要一个
ViewAction
Espresso.pressBack()
返回
void
。是否要添加更多详细信息?使用:ViewActions.pressBack()使用
AndroidX
依赖项类似于
androidTestImplementation“AndroidX.test.uiautomator:uiautomator:2.2.0”