与Espresso 2.2.2的ImmersiveModeConfirmation

时间:2017-06-04 19:15:24

标签: android junit4 android-espresso android-junit

看起来Google云测试服务器上的某些虚拟设备无法正常执行测试,因为Immersive模式确认弹出窗口(如下所示:https://developer.android.com/training/system-ui/immersive.html) - 有没有办法自动关闭Espresso的弹出窗口?基本上我的代码可以在本地模拟器中运行,但不能在Google云服务器上运行。 这就是失败的原因:

View v = activity.getWindow().getDecorView();
v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

3 个答案:

答案 0 :(得分:0)

您可以在模拟器启动后立即运行这些ADB命令:

adb shell settings put secure immersive_mode_confirmations your.package.com
adb reboot (required)

immersive_mode_confirmations 是一个逗号分隔的软件包列表,不再需要确认沉浸式模式

答案 1 :(得分:0)

我找到了可行的解决方案。这与Paul的回答类似,但是是通过在运行测试之前以编程方式设置权限,而不是使用ADB。 从获取WRITE_SECURE_SETTINGS权限到动态更改沉浸式确认对话框的需求,LinkedIn开源库可以为您做所有事情。 设置库之后,在测试开始之前使用以下行:

TestButler.setImmersiveModeConfirmation(false);

有关更多详细信息和设置说明,请转到here

答案 2 :(得分:0)

我已经使用类似版本的@ paul-t解决了该问题。启动模拟器后,运行下一个命令:

adb shell settings put secure immersive_mode_confirmations confirmed

之后,您可以执行Espresso测试。

灵感:http://sviatoslavdev.blogspot.com/2018/02/adb-setings-secure.html