【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有什么区别?

相关内容

热门资讯

马化腾亮相腾讯股东大会,称AI... 来源:@界面新闻微博 【马化腾亮相腾讯股东大会,称AI已...
熊猫债前4个月累计发行622亿... 来源:@究竟视频微博 【#熊猫债前4个月累计发行622亿元#,#熊猫债成国际资本香饽饽#】5月...
供给创造需求,梅花创投林珈妮:... 转自:贝壳财经新京报贝壳财经讯(记者陈维城)“我们已经迫不及待地想让机器人把人类从盲目的、琐碎的工作...
湘西州委:坚决拥护省委决定 转自:政事儿湘西网消息,5月13日上午,湘西州委书记刘涛主持召开州委常委会会议,通报湖南省纪委监委对...
七部门联发!重磅科创红利政策来... 5月14日,科技部、中国人民银行、金融监管总局、中国证监会、国家发展改革委、财政部、国务院国资委联合...
CFTC 委员 Mersing... 美国商品期货交易委员会(CFTC)委员 Summer Mersinger 将于 5 月 30 日辞职...
《老虎,别怕》英文版绘本首发式... 中新网伦敦5月14日电 (欧阳开宇 卞雨晨)5月13日,英国后浪出版公司携手福建省安溪县人民政府共同...
高盛因未能妥善报告数十亿笔交易...   美国华尔街投行高盛集团(Goldman Sachs)将支付 145 万美元民事罚款,以了结美国监...
大洋彼岸火速来电:中美贸易复苏... 南方财经全媒体记者谭海燕 郑康喜 江珊 冯玉怡 周妙妙  高慧超 雷若馨 广州、东莞、珠海、深圳、佛...
特朗普访问卡塔尔 两国签署多项... 格隆汇5月14日|当地时间5月14日下午,美国总统特朗普访问卡塔尔期间,双方签署了经贸、防务等领域的...
湖南江华:十二项实事助力高三生... 中国教育报-中国教育新闻网讯(通讯员 唐世日 记者 阳锡叶)“水果、咖啡、牛奶一应俱全,老师或吃着苹...
全市污染防治攻坚战推进会召开 转自:荆州发布全市污染防治攻坚战推进会召开刮骨疗毒治顽疾 动真碰硬抓整改坚决打好打赢污染防治攻坚战5...
市政协经济界别委员工作室开展“... 稿源:掌上长沙2025-05-14 22:30 长沙晚报掌上长...
爱奇艺推出院线新片分账模式 ... 每经记者|宋美璐    每经编辑|董兴生     在电影行业,“票房定生死”。然而...
和而泰:实控人等拟合计减持公司... 人民财讯5月14日电,和而泰(002402)5月14日晚间公告,公司控股股东、实际控制人、董事长、总...
调研速递|漳州发展接受众多投资... 2025年5月14日,福建漳州发展股份有限公司举办了2025年福建辖区上市公司投资者网上集体接待日活...
童亚辉,主动投案 澎湃新闻记者 岳怀让5月14日晚间,中央纪委国家监委网站发布了援引自浙江省纪委监委消息:浙江省能源集...
马上评|安排见义勇为学生补考,... 近日,“小伙为救同学职教高考语文缺考”一事感动了很多网友,大家也很关心救人小伙姜昭鹏“能否得到一次补...
山东寿光:体教融合“微改革”掀... 低年级的学生跳绳、踢毽子,高年级的学生拔河、接力,校排球队队员们则在球场奋力“拼杀”……近日,山东潍...
刚刚,中国乒协辟谣 5月14日晚,据澎湃新闻消息,今日开始,关于国际乒联第一副主席、WTT世界乒联主席、中国乒协原主席刘...