看起来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);
答案 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