app自动化——capability参数配置解析

一、capability 含义

  • capability功能

    • 配置appium会话,告诉appium服务器需要自动化的平台的应用程序
  • capability的形式

    • 键值对的集合,键对应设置的名称,值对应设置的值
  • 主要分为三部分

    • 公共部分
    • ios部分
    • Android部分
  • session

    • appium的客户端和服务端之间的通信的前提
    • 通过desired capability建立会话

二、capability 参数介绍

2.1、公共部分参数配置

键 描述 值
platformNaame 使用的手机操作系统 iOS,Android,或者FirefoxOS
platformVersion 手机的操作系统版本 例如7.14.4.1
deviceName 设备名称 iPhone Simulator , iPad Simulator , iPhone Retina 4-inch , Android Emulator , Galaxy S4 , 等等…. 在 iOS 上,使用 Instruments的 instruments -s devices 命令可返回一个有效的设备的列表。在 Andorid 上虽然这个参数目前已被忽略,但仍然需要添加上该参数
automationName 使用哪个自动化引擎 Android默认automator2,ISO默认XCUTest
noReset 在当前session下不会重置应用的状态,默认值为false true、false
uuid 连接设备的唯一设备编号(unique device identifier) 例如4646546

2.2、Android部分参数配置

键 描述 值
appActivity activity的名字是指从安装包中所要启动的Android activity。通常需要在前面添加,(例如使用.MainActivity代替MainActivity) MainActivity,.Settings
appPackage 运行Android的应用的包名 com.android.settings
appWaitActivity 用于等待启动的Andriod Activity名称 SplashActivity
unicodeKeyboard 启用unicode输入,默认false true、false
resetKeyboard true、false
dontStopAppOnReset 首次启动时不停止app true、false
skipDeviceInitialization 跳过安装、权限设置等操作 true、false

2.3、iOS 独有

键 描述 值
bundleId 被测应用的 bundle ID 。用于在真实设备中启动测试,也用于使用其他需要 bundle ID 的关键字启动测试。在使用 bundle ID 在真实设备上执行测试时,你可以不提供 app 关键字,但你必须提供 udid 。 例如 io.appium.TestApp
autoAcceptAlerts 当 iOS 的个人信息访问警告 (如 位置、联系人、图片) 出现时,自动选择接受( Accept )。默认值 false true 或者 false
showIOSLog 是否在 appium 日志中显示从设备捕获的任何日志。默认 false true or false

2.4、Desire capability 参数示例

  • API Demo 启动页配置
{
  "platformName": "android",
  "deviceName": "emulator-5554",
  "appPackage": "io.appium.android.apis",
  "appActivity": ".ApiDemos"
}

2.5、配置优化

  • 添加参数,提高用例的稳定性
{
  "noReset": "true", // 不清空缓存信息
  "dontStopAppOnReset": "true", // 首次启动的时候,不停止app
  "skipDeviceInitialization": "true", // 跳过安装,权限设置等操作
  "unicodeKeyBoard": "true" // 输入中文
}