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