使用 Detox 在 Android 上设置相机权限

Posted

技术标签:

【中文标题】使用 Detox 在 Android 上设置相机权限【英文标题】:Setting camera permissions on Android using Detox 【发布时间】:2020-10-30 11:12:28 【问题描述】:

说明

我正在测试一个可以访问相机以获取照片的屏幕。但我无法处理 android 测试中的权限对话框。

我使用await device.launchApp( permissions: camera: 'YES' ); 运行测试。此设置适用于 ios。如何接受 Android 的所有权限?或者如何处理 Android 上的权限对话框?

复制

init.js 设置

await device.launchApp(
  permissions:  photos: 'YES', camera: 'YES' ,
);

模拟器设置


  "configurations": 
    "android.emu.debug": 
      "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
      "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
      "type": "android.emulator",
      "device": 
        "avdName": "Nexus_S_API_27"
      
    
  

环境

排毒:16.2.1 反应原生:0.60.4 节点:12.16.1 操作系统:macOS Mojave 10.14.6 设备:模拟器 Nexus S API 27

【问题讨论】:

【参考方案1】:

我的 Android 模拟器的 Detox 17.2.0、React Native 0.61、API 27 也有这个问题。它在 iOS 上完美运行,但在 Android 上,无论我设置 NOYES 权限,它们始终处于启用状态。

如果我在启动detox test 之前更改应用程序的这些权限,所有权限都会再次启用。

我的测试如下所示:

describe('Permissions', () => 
  beforeEach(async () => 
    await device.reloadReactNative()
  )

  it('displays no warning when camera and microphone access are authorized', async () => 
    await device.launchApp( newInstance: true, permissions:  camera: 'YES', microphone: 'YES'  )
    ...
  )

  it('displays a warning message + button to app settings when camera access is denied', async () => 
    await device.launchApp( newInstance: true, permissions:  camera: 'NO', microphone: 'YES'  )
    ...
  )
)

Detox 暂时无法处理这个问题我猜如果你检查这个问题https://github.com/wix/Detox/issues/2184

【讨论】:

以上是关于使用 Detox 在 Android 上设置相机权限的主要内容,如果未能解决你的问题,请参考以下文章

Detox - Android / iOS - 无法在 android 上运行相同的测试

Detox 框架可以在模拟器/模拟器上拍照吗?

Bitrise 上的 Detox 无法在 Android 上运行 - React Native

在使用 Detox 运行测试期间,Android 模拟器无法启动应用程序

使用 Detox 在 Android React Native 应用程序中通过 Chrome 弹出测试登录

如何仅在 IOS 上运行 Detox 测试并禁用 Android 运行