我四处寻找解决方案,却找不到解决方案。我正在创建Espresso测试,需要在第一次显示特定活动屏幕时关闭出现在屏幕中间的警报对话框。对话框上没有按钮,因此要关闭它,用户需要单击框外的任何位置。有谁知道我怎么能用Espresso做到这一点。我尝试点击底层屏幕上的布局,但Espresso无法说在层次结构中找不到该视图。
使用onView(withText("alert_dialog_text")).perform(pressBack());
这必须解雇你的对话。
首先检查是否显示警告对话框,如果是,则执行pressBack click事件
onView(withText("OK")).inRoot(isDialog()).check(matches(isDisplayed())).perform(pressBack());
用对话框中显示的文本替换OK文本
浓咖啡不能这样做。
您需要在Espresso测试中使用uiautomator,将其添加到项目的gradle中:
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
出现对话框后,您可以在任何坐标处单击屏幕:
UiDevice device = UiDevice.getInstance(getInstrumentation());
device.click(x,y);
这将关闭你的对话框
正如Ruben在之前的回答中已经提到的,这看起来像是一个需要考虑使用UIAutomator的问题。使用Espresso,您只能在应用程序环境中操作,而UIAutomator可让您控制测试设备。
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)或更高版本。我尝试了我的结果,你只需要调用pressBack()。我有同样的情况,这对我帮助很大。如果这对您没有帮助,我们可以说话,我会帮助您。祝好运!