Capability配置参数解析
capability 配置参数解析
简介
Capability
功能是用于启动 Appium
会话的一组参数的名称。这部分信息描述了 session 所希望具备的“功能”。
功能表示为键值对的集合,值可以是任何有效的 JSON
类型,包含其他对象。
Appium 的客户端和服务端之间进行通信都必须在一个 Session 的上下文中进行。
客户端在发起通信的时候首先会发送一个叫作 “Desired Capabilities” 的 JSON 对象给服务器。服务器收到该数据后,会创建一个 session 并将 session 的 ID 返回到客户端,之后客户端可以用该 session 的 ID 发送后续的命令。
Capability 设置
W3C 标准 Capability
W3C WebDriver
关于平台的标准 capability 的其中一小部分如下表所示:
Capability Name | 类型 | 描述 |
---|---|---|
browerName |
string |
要启动和自动化的浏览器的名称 |
browerVersion |
string |
具体浏览器版本 |
platformName |
string |
平台名称 |
常用的公共 Capability
Appium 在 W3C 规定的 capabilities
标准的基础上引入了其他更适配不同平台的附加功能。并且,任何非标准的 扩展 capability 都必须包含 appium:
前缀。
Appium 支持的平台,有如下几种:
- Browsers。
- iOS apps。
- Android apps。
- React apps。
- Unity。
其中在不区分驱动程序时,常用的 Capability 有如下几种:
键 | 描述 | 值 | 是否必填 |
---|---|---|---|
platformName |
平台类型 | iOS,Android,或者 Firefox0S | 是 |
appium:automationName |
Appium 驱动程序的名称 | uiautomator2、xcuitest | 是 |
browserName |
如果支持 Web 浏览器作为特殊情况,则浏览器的名称 | Chrome、firefox | 否 |
appium:deviceName |
要自动化的特定设备的名称,例如 iPhone 14 (目前仅对指定 iOS 模拟器有用,因为在其他情况下,通常建议通过 appium:udid 使用特定设备 ID 能力)。 | iPhone14 | 否 |
appium:platformVersion |
平台的版本 | 例如 7.1 , 4.4 |
否 |
appium:newCommandTimeout |
Appium 服务器在确定客户端已离开并且会话应关闭之前应等待客户端发送命令的秒数 | 120 | 否 |
appium:noReset |
设置为 true 时,在当前 session 下不会重置应用的状态(默认为 false) | true | 否 |
appium:fullReset |
设置为 true,则指示 Appium 驱动程序通过附加步骤来增强其通常的重置逻辑,以确保最大的环境再现性(默认 false ) | true | 否 |
appium:printPageSourceOnFindFailure |
如果为 true,则每当查找元素的请求失败时,都会收集页面源并将其打印到 Appium 日志(默认 false ) | true | 否 |
appium:eventTimings |
如果为 true,则指示 Appium 驱动程序收集事件计时(默认 false ) | true | 否 |
appium:shouldTerminateApp |
指定应用程序是否应在会话结束时终止。默认值为 true ,除非 noReset 功能设置为 true 。 |
true | 否 |
appium:forceAppLaunch |
指定如果应用程序已经在会话启动时运行,是否应该强制重新启动。默认值为 true ,除非 noReset 设置为 true | true | 否 |
Android 部分特有参数配置
键 | 描述 | 值 |
---|---|---|
appium:appActivity |
Activity 的名字是指从你的包中所要启动的 Android acticity。他通常需要再前面添加. (例如 使用 .MainActivity 代替 MainActivity ) |
MainActivity , .Settings |
appium:appPackage |
运行的 Android 应用的包名 | com.example.android.myApp , com.android.settings |
appium:appWaitActivity |
用于等待启动的 Android Activity 名称 | SplashActivity |
appium:unicodeKeyboard |
启用 Unicode 输入,默认为 false | true or false |
appium:resetKeyboard |
true or false |
|
appium:dontStopAppOnReset |
首次启动的时候,不停止 app | true or false |
appium:skipDeviceInitialization |
跳过安装,权限设置等操作 | true or false |
iOS 独有
键 | 描述 | 值 |
---|---|---|
appium:bundleId |
被测应用的 bundle ID 。用于在真实设备中启动测试,也用于使用其他需要 bundle ID 的关键字启动测试。在使用 bundle ID 在真实设备上执行测试时,你可以不提供 app 关键字,但你必须提供 udid 。 |
例如 io.appium.TestApp |
appium:autoAcceptAlerts |
当 iOS 的个人信息访问警告 (如 位置、联系人、图片) 出现时,自动选择接受( Accept )。默认值 false | true 或者 false |
appium:showIOSLog |
是否在 appium 日志中显示从设备捕获的任何日志。默认 false | true or false |
Desire capability 参数示例
API Demo 启动页配置
{
"platformName": "android",
"deviceName": "emulator-5554",
"appium:appPackage": "io.appium.android.apis",
"appium:appActivity": ".ApiDemos"
}
推荐配置优化参数
添加参数,提高用例的稳定性
{
"appium:noReset": True, // 不清空缓存信息
"appium:dontStopAppOnReset": True, // 首次启动的时候,不停止app
"appium:skipDeviceInitialization": True, // 跳过安装,权限设置等操作
"appium:unicodeKeyBoard": True // 输入中文
}
总结
以上是一些常见的 Appium 配置参数,具体使用哪些参数取决于具体的测试需求和应用类型。配置参数的正确设置对于成功执行自动化测试非常重要,因此需要仔细分析测试需求,配置相应的参数。