如何在执行仪器测试期间关闭任何系统对话框

Posted

技术标签:

【中文标题】如何在执行仪器测试期间关闭任何系统对话框【英文标题】:How to close any system dialog during execution instrumentation tests 【发布时间】:2017-11-29 14:41:53 【问题描述】:

我有一个包含大约 20 台 android 设备的农场,用于运行仪器 UI 测试。我用浓缩咖啡。有时会出现不同的系统对话框并导致测试失败。 例如。 USSD结果对话框、网络丢失对话框、OS更新请求对话框等。

有没有办法捕捉任何对话框并关闭它? 这种意图没有帮助。

Intent.ACTION_CLOSE_SYSTEM_DIALOGS

【问题讨论】:

谢谢大家。我没有找到唯一的解决方案,我决定处理所有未通过测试的对话。 【参考方案1】:

点击返回按钮事件很简单

onView(isRoot()).perform(ViewActions.pressBack());

将此添加到您的 gradle 中:

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

然后在你的测试中这样做:

UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); mDevice.pressBack();

如果您更喜欢 Espresso UI 测试,请查看 GitHub 上的 Expresso 演示项目:https://github.com/ranaNarin/Espresso-Android 在这个演示项目中,在所有场景中实现了 espresso:- EditText、按钮、选项菜单单击、导航抽屉打开和关闭、单击回收器视图项、打开相机并使用 Espresso UI 测试单击图像

【讨论】:

谢谢。按下返回是简单而好的解决方案,但是有些对话框无法通过按下返回来关闭。 请阅读How not to be a spammer。您必须向任何站外链接披露您的从属关系,否则您将面临被标记为垃圾邮件的风险。【参考方案2】:

我一直在研究这个。弹出窗口有一个 id,可以使用测试框架将其关闭。到目前为止,我已经找到了如何使用 appium 来实现它,并且还有另一个 GitHub 必须使用工具来实现它,但我还没有实现它。

https://github.com/jamesknowsbest/aws-device-farm-sample-app-for-android

【讨论】:

以上是关于如何在执行仪器测试期间关闭任何系统对话框的主要内容,如果未能解决你的问题,请参考以下文章

win10关闭smart screen筛选器

MFC为啥一关闭对话框就系统崩溃 弹出英语说某个地址不可写。。。?

win11执行保护64位执行文件

在重新部署 .ear 文件期间未执行 Liquibase 脚本[关闭]

如何以编程方式关闭 Android 中的共享系统对话框?

WIN7资源管理器点击右键或新建文件夹时自动关闭