2

由于沉浸式模式确认弹出窗口(此处显示: 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);
4

3 回答 3

0

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

TestButler.setImmersiveModeConfirmation(false);

有关更多详细信息和设置说明,请访问此处

于 2018-10-24T16:26:43.843 回答
0

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

adb shell settings put secure immersive_mode_confirmations confirmed

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

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

于 2019-05-08T07:48:18.220 回答
0

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

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

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

于 2017-07-26T19:20:07.093 回答