【L1.第五章】 Appium Capablility 配置参数详细解析

Python+Appium+Pytest 自动化测试教程

  • [Appium Capablility 配置参数详细解析](#Appium Capablility 配置参数详细解析)
    • [1、W3C 标准 Capability解析](#1、W3C 标准 Capability解析)
    • [2、常用的公共 Capability解析](#2、常用的公共 Capability解析)
    • [3、Android 部分特有参数配置解析](#3、Android 部分特有参数配置解析)
    • [4、IOS 独有参数配置解析](#4、IOS 独有参数配置解析)
    • [5、Desire Capability 初始化参数](#5、Desire Capability 初始化参数)
    • [6、Desire Capability 推荐添加参数](#6、Desire Capability 推荐添加参数)
    • [7、Desire Capablility 完美优化参数](#7、Desire Capablility 完美优化参数)

Appium Capablility 配置参数详细解析

Capability 功能是用于启动 Appium 会话的一组参数的名称。这部分信息描述了 session 所希望具备的"功能"。

功能表示为键值对的集合,值可以是任何有效的 JSON 类型,包含其他对象。

Appium 的客户端和服务端之间进行通信都必须在一个 Session 的上下文中进行。
客户端在发起通信的时候首先会发送一个叫作 "Desired Capabilities" 的 JSON 对象给服务器。服务器收到该数据后,会创建一个 session 并将 session 的 ID 返回到客户端,之后客户端可以用该 session 的 ID 发送后续的命令。

1、W3C 标准 Capability解析

W3C WebDriver 关于平台的标准 capability 的其中一小部分如下表所示:

Capability Name 类型 描述
browerName string 要启动和自动化的浏览器的名称
browerVersion string 具体浏览器版本
platformName string 平台名称

2、常用的公共 Capability解析

Appium 在 W3C 规定的 capabilities 标准的基础上引入了其他更适配不同平台的附加功能。并且,任何非标准的 扩展 capability 都必须包含 appium: 前缀。

Appium 支持的平台,有如下几种:

  1. Browsers
  2. iOS apps
  3. Android apps
  4. React apps
  5. Unity

其中在不区分驱动程序时,常用的 Capability 有如下几种:

是否必填 描述
platformName iOS,Android,或者 Firefox0S 平台类型
appium:automationName uiautomator2、xcuitest Appium 驱动程序的名称
browserName iChrome、firefox 如果支持 Web 浏览器作为特殊情况,则浏览器的名称
appium:deviceName iPhone14、15、16 要自动化的特定设备的名称,例如 iPhone 14 (目前仅对指定 iOS 模拟器有用,因为在其他情况下,通常建议通过 appium:udid 使用特定设备 ID 能力)。
appium:platformVersion 例如 7.1, 4.4 平台的版本
appium:newCommandTimeout 120 Appium 服务器在确定客户端已离开并且会话应关闭之前应等待客户端发送命令的秒数
appium:noReset true 设置为 true 时,在当前 session 下不会重置应用的状态(默认为 false)
appium:fullReset true 设置为 true,则指示 Appium 驱动程序通过附加步骤来增强其通常的重置逻辑,以确保最大的环境再现性(默认 false )
appium:printPageSourceOnFindFailure true 如果为 true,则每当查找元素的请求失败时,都会收集页面源并将其打印到 Appium 日志(默认 false )
appium:eventTimings true 如果为 true,则指示 Appium 驱动程序收集事件计时(默认 false )
appium:shouldTerminateApp true 指定应用程序是否应在会话结束时终止。默认值为 true,除非 noReset 功能设置为 true。
appium:forceAppLaunch true 指定如果应用程序已经在会话启动时运行,是否应该强制重新启动。默认值为 true ,除非 noReset 设置为 true

3、Android 部分特有参数配置解析

描述
appium:appActivity MainActivity, .Settings Activity 的名字是指从你的包中所要启动的 Android acticity。他通常需要再前面添加. (例如 使用 .MainActivity 代替 MainActivity)
appium:appPackage com.example.android.myApp, com.android.settings 运行的 Android 应用的包名
appium:appWaitActivity SplashActivity 用于等待启动的 Android Activity 名称
appium:appWaitActivity SplashActivity 用于等待启动的 Android Activity 名称
appium:unicodeKeyboard True or False 启用 Unicode 输入,默认为 false
appium:resetKeyboard True or False
appium:dontStopAppOnReset True or False 首次启动的时候,不停止 app
appium:skipDeviceInitialization True or False 跳过安装,权限设置等操作

4、IOS 独有参数配置解析

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

5、Desire Capability 初始化参数

bash 复制代码
{
  "platformName": "android",
  "deviceName": "TEST-XXX",
  "appium:appPackage": "io.appium.android.XXX",
  "appium:appActivity": ".ApiDemos"
}

6、Desire Capability 推荐添加参数

添加参数,提高用例的稳定性

bash 复制代码
{
  "appium:noReset": True, #不清空缓存信息
  "appium:dontStopAppOnReset": True, #首次启动的时候,不停止app
  "appium:skipDeviceInitialization": True,#跳过安装,权限设置等操作
  "appium:unicodeKeyBoard": True #输入中文
}

7、Desire Capablility 完美优化参数

bash 复制代码
{
  "platformName": "android",
  "deviceName": "TEST-XXX",
  "appium:appPackage": "io.appium.android.XXX",
  "appium:appActivity": ".ApiDemos",
  "appium:noReset": True, #不清空缓存信息
  "appium:dontStopAppOnReset": True, #首次启动的时候,不停止app
  "appium:skipDeviceInitialization": True,#跳过安装,权限设置等操作
  "appium:unicodeKeyBoard": True #输入中文
}

以上是一些常见的 Appium Capablility 配置参数,具体使用哪些参数取决于具体的测试需求和应用类型。配置参数的正确设置对于成功执行自动化测试非常重要,因此需要仔细分析测试需求,配置相应的参数。

相关推荐
猫头虎1 小时前
如何查看局域网内IP冲突问题?如何查看局域网IP环绕问题?arp -a命令如何使用?
网络·python·网络协议·tcp/ip·开源·pandas·pip
沿着路走到底2 小时前
python 基础
开发语言·python
烛阴3 小时前
武装你的Python“工具箱”:盘点10个你必须熟练掌握的核心方法
前端·python
杨枝甘露小码4 小时前
Python学习之基础篇
开发语言·python
我是华为OD~HR~栗栗呀4 小时前
23届考研-Java面经(华为OD)
java·c++·python·华为od·华为·面试
小蕾Java5 小时前
PyCharm 软件使用各种问题 ,解决教程
ide·python·pycharm
Lucky_Turtle5 小时前
【PyCharm】设置注释风格,快速注释
python
唐古乌梁海5 小时前
【pytest 】 pytest 生命周期
pytest
kunge1v55 小时前
学习爬虫第四天:多任务爬虫
爬虫·python·学习·beautifulsoup
萧鼎5 小时前
Python schedule 库全解析:从任务调度到自动化执行的完整指南
网络·python·自动化