【App自动化测试】(四)Capability配置参数说明
创始人
2024-02-10 08:26:00
0

目录

  • 1. Capability 介绍
    • 1.1 Capability 功能
    • 1.2 Capability形式
  • 2. Capability参数
    • 2.1 公共部分参数配置
    • 2.2 Android 部分特有参数配置
    • 2.3 iOS 独有参数配置
    • 2.4 测试策略相关设置
    • 2.5 性能相关参数设置
  • 3. 示例


前言
本文为在霍格沃兹测试开发学社中学习到的一些技术写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 😘


  • Appium Desired Capabilities官方文档:http://appium.io/docs/en/writing-running-appium/caps/index.html
  • appium-uiautomator2-drive Capabilities官方文档: https://github.com/appium/appium-uiautomator2-driver#capabilities

1. Capability 介绍

1.1 Capability 功能

Capability 主要用于配置 Appium会话,告诉 Appium 服务器需要自动化的平台的应用程序。Capability在使用编写测试脚本时会向Appium服务器端发送指令,让Appium服务器端知道被测设备的信息,Capability也可在去设置Appium运行过程中的参数,通过设置参数可以提高运行的速度,或者是满足特殊场景。

1.2 Capability形式

Capability是键值对的集合,键对应设置的名称,值对应设置的值。

{"platformName": "android","deviceName": "emulator-5554","appPackage": "io.appium.android.apis","appActivity": ".ApiDemos"
}

2. Capability参数

2.1 公共部分参数配置

描述
platformName使用的手机操作系统iOS,Android,或者 Firefox0S
platformVersion手机操作系统的版本例如7.1,4.4
deviceName使用的手机或模拟器类型iPhone Simulator,iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy S4, 等等…. 在 iOS 上,使用 Instruments
instruments -s devices或者 xcrun xctrace list devices (Xcode版本>12) 命令可返回一个有效的设备的列表。
在 Andorid 上虽然这个参数目前已被忽略,但仍然需要添加上该参数,可随便设置
automationName使用哪个自动化引擎android默认使用uiautomator2ios默认使用XCUTest
noReset在当前 session 下不会重置应用的状态。默认值为falsetrue,false
udid连接的真实设备的唯一设备编号 (Unique device identifier)例如1ae203187fc012g

2.2 Android 部分特有参数配置

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

2.3 iOS 独有参数配置

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

2.4 测试策略相关设置

描述
newCommandTimeoutnewCommandTimeout是appium等待下一次命令发送过来的时长。如果在这个时间范围内,还未收到下一次的命令,就会报超时异常。默认是60秒,可以根据需求设置对应时间。比如,测试过程中存在上传apk文件的这种操作,该操作耗时可能会比较长,若果不从新设置超时时间,可能在60s内无法完成上传操作,导致测试流程中断。e.g. 60
udid1. udid是满足Appium允许多设备同时运行的参数,当存在多设备的时候,appium只会读取设备列表中的第一个设备进行运行。如果只设置devicename,是不能指定设备的唯一标识的,必须通过udid来确定设备,uidi是确定设备的唯一标识。

2. Android 系统中可以使用adb devices -l来获取设备列表,从而取得udid。

3. iOS系统的话,设备的udid需要去xcode中查找,xocode中有一个设备管理的位置,可以用于查看设备信息。
e.g. 1ae203187fc012g
autoGrantPermissions1. autoGrantPermissions是设置appium自动授予的权限的参数。比如,在设备首次安装app是会弹出需要授予系统权限的弹框,这种弹框的弹出可能会影响测试过程,但是如果所有的权限弹框操作都全部通过脚本去处理就会非常麻烦。因此可以使用autoGrantPermissions去自动授予权限,关闭权限弹框。

2. 注意:当noReset参数是True的话,autoGrantPermissions则无法生效。
true or false
noResetAndroid: noReset的作用是停止APP、 不清除APP数据、 不卸载apptrue,false
fullResetAndroid:停止APP、 清除APP数据 或卸载app停止APP、 清除APP数据 或卸载apptrue,false
dontStopAppOnReset如果配置的APP是当前已经启动的APP的话,则不会kill掉当前页面,再重新启动的。(参数很有用,尤其在自动化测试过程中需要衔接上调case和下调case的使用)true or false

2.5 性能相关参数设置

描述
skipDeviceInitialization如果设置为true,则在会话创建时取消设备启动检查(主要检查设备是否准备好,设置应用程序是否已安装等)。默认为False 。true,false
skipServerInstallation如果设置为true,则跳过在被测设备上的UiAutomator2 Server组件安装和所有相关检查。如果您确定设备上安装了正确的服务器版本,这将有助于加快会话启动。如果没有安装服务器或安装了不正确的版本,那么稍后可能会出现意外错误。默认为Falsetrue,false
skipUnlock当设置成true时会跳过检查锁屏是否存在的操作。默认情况下,UiAutomator2驱动程序尝试在开始测试之前检测设备的屏幕是否被锁定并解锁(有时可能不稳定)。注意,此操作需要一些时间,因此强烈建议将此功能设置为true,并在测试设备上禁用屏幕锁定。true or false
skipLogcatCapture设置为true将禁止在测试运行期间自动收集logcat输出。默认为Falsetrue or false
systemPortUiAutomator2服务器监听的端口号。默认情况下,选择8200…8299范围内的第一个空闲端口。如果在同一台计算机上运行并行测试,建议设置此值。
ignoreUnimportantViews启用或禁用布局层次结构压缩。如果启用压缩,框架中将只包含对uiautomator测试比较重要的节点。其他不必要的节点会被删除,默认为True。true or false

3. 示例

在setup中创建一个 desire_cap字典,用来存放Capability相关配置

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumByclass TestXueQiu:def setup(self):# 创建一个字典desire_cap = {}# 平台desire_cap['platform'] = 'Android'#手机系统版本desire_cap['platformVersion']= '6.0'# 设备名desire_cap['deviceName'] = '127.0.0.1:7555'# app 包名desire_cap['appPackage'] = 'com.xueqiu.android'# app 页面名desire_cap['appActivity'] = '.common.MainActivity'desire_cap['noReset'] = 'true'#每次测试重置数据desire_cap['skipDeviceInitization']= 'true'#保证可以正常输入中文desire_cap['unicodeKeyBoard'] = 'true'desire_cap['resetKeyBoard'] = 'true'self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desire_cap)self.driver.implicitly_wait(10)def teardown(self):# 回收sessionself.driver.quit()def test_api_demo(self):"""1、打开 雪球 app2、点击搜索输入框3、像搜索框中输入“阿里巴巴”4、在搜索结果中选择“阿里巴巴”,然后进行点击5、获取这只上 阿里巴巴的股价,并判断这只股价的价格<2006、断言:return:"""#定位搜索框并进行点击self.driver.find_element(AppiumBy.ID,'com.xueqiu.android:id/tv_search').click()#搜索框输入“阿里巴巴”self.driver.find_element(AppiumBy.ID,'com.xueqiu.android:id/search_input_text').send_keys("阿里巴巴")#在搜索结果中选择“阿里巴巴”,并且点击self.driver.find_element(AppiumBy.XPATH,"//*[@resource-id='com.xueqiu.android:id/name' and @text='阿里巴巴']").click()#获取当前股价current_price=float(self.driver.find_element(AppiumBy.ID,'com.xueqiu.android:id/current_price').text)# 断言assert current_price<200

文末说明:
接口测试中我们很容易混淆Session、cookie和token,你知道他们有什么区别吗?

快来跟我一起看,一篇文章让你了解三者的区别。😎
⬇⬇⬇⬇⬇⬇⬇
👍👍👍:接口测试经典面试题:Session、cookie、token有什么区别?

相关内容

热门资讯

新华全媒+丨小众兴趣走向大众市... 转自:新华社   当前,我国潮玩市场处于高速增长期,并形...
列车脱线停运近3小时,男子砸窗... 近日,有网友发帖称,K1373次列车在浙江金华脱线停运约3小时,因车厢不通风,车内闷热,有乘客拿安全...
大连一夜发生7649次闪电 遇... 本文转自【央视新闻客户端】近日,在辽宁大连市,有市民拍摄到天空出现了密集的闪电。这种高频率的雷电现象...
广西加强涉侨法律服务 构建涉侨... 中新网南宁7月5日电(林浩 韦佳秀)7月5日,广西壮族自治区司法厅介绍,该厅日前和广西壮族自治区归国...
青年作家陈伟军出新作《我们光芒... 转自:北京日报客户端青年作家陈伟军儿童文学新作《我们光芒万丈》日前出版,该书关照青少年心理健康,呼吁...
20分钟生死竞速!92人成功避... 转自:贵州日报 贵州日报天眼新闻记者 谢朝政 杨锦焘“我刚跑出家门,屋后一声巨响,一块山上滚落的巨石...
徐麟李炳军会见刘捷率领的浙江省... 转自:贵州日报 本报讯(记者 曾书慧)7月4日,省委书记徐麟,省委副书记、省长李炳军在贵阳会见浙江省...
第三十一届兰洽会丨提前打探兰洽... 中国甘肃网7月5日讯(西北角·中国甘肃网记者 宋芳科)明日,第三十一届兰洽会将在兰州隆重开幕。7月5...
西城首家全龄友好服务中心落地展... 转自:北京新闻广播 #北京西城第一家全龄友好服务中心落地...
@高考考生,你的录取通知书可能... 来源:央视新闻客户端@高考考生你的录取通知书可能已在路上!7月3日起2025年高考录取通知书EMS邮...