You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Android/iOS自动化测试权限弹窗:如何通过Desired Capabilities处理?

嘿,我之前也跟你一样被Appium的权限弹窗折腾过,给你分享几个亲测有效的Desired Capabilities配置和补充方案,分Android和iOS分别说:

Android 端解决方案
  • 先检查autoGrantPermissions的取值:很多人会写成字符串"true",但Appium要求这个参数是布尔值,改成下面这样试试:
    {
      "platformName": "Android",
      "autoGrantPermissions": true,
      // 其他必要配置(比如deviceName、appPackage等)
    }
    
  • 如果还是没效果,加上autoAcceptAlerts: true,这个参数能兜底处理大部分系统级的弹窗提示
  • 针对Android 10+的特殊权限(比如位置、相机),可以直接指定需要授权的权限列表,用grantPermissions参数:
    {
      "grantPermissions": ["android.permission.ACCESS_FINE_LOCATION", "android.permission.CAMERA", "android.permission.READ_EXTERNAL_STORAGE"]
    }
    
iOS 端解决方案
  • 你之前的配置里,试试新增permissions参数,直接给对应权限指定授权状态,这个参数对iOS权限弹窗的处理更精准:
    {
      "platformName": "iOS",
      "bundleId": "io.appium.TestApp",
      "locationServicesEnabled": true,
      "locationServicesAuthorized": true,
      "autoAcceptAlerts": true,
      "permissions": {
        "location": "always", // 可选"wheninuse"或"never"
        "camera": "yes",
        "photos": "yes"
      }
    }
    
  • 如果你用的是iOS 13+模拟器/设备,建议加上usePrebuiltWDA: true,预编译的WebDriverAgent对弹窗的兼容性更好,能避免默认WDA未处理弹窗逻辑的问题
  • 要是以上都不行,检查下Appium版本,升级到最新稳定版,旧版本对新iOS系统的权限处理可能有bug

另外补充个小细节:如果测试代码里提前触发了权限请求(比如启动App后立刻调用需要权限的功能),可能会导致Desired Capabilities的配置还没生效弹窗就弹出来了,建议在测试开始前先让Appium完成权限初始化。

内容的提问来源于stack exchange,提问作者Mykhaylo Holovanov

火山引擎 最新活动