Appium - desired_caps 参数详解

文章目录

        • 常用参数:
        • 通用参数:
        • Android 专用参数
        • IOS 特有参数
        • 获取 appPackage 与 appActivity 的值:*
            • 方法一:
            • 方法二:日志抓取
            • 方法三:aapt 工具( 推荐 )

在与 Appium service 服务建立会话的时候,手机端需要告诉服务器一些设备相关的参数,这样服务器才会根据这些参数做对应的处理。

常用参数:

desired_caps = {
    # 设备系统
    'platformName': 'Android',
    # 设备系统版本号
    'platformVersion': '18',
    # 设备名称,必须有
    'deviceName': '127.0.0.1:62001',
	
	# 说明:在参数中如果指定 app 包名路径,就不需要指定 appPackage 和 appActivity 两个参数了,会产生冲突
	# 'app' : 'C:\\Users\\Administrator\\Desktop\\123456\\moer.apk'	
	
    # 应用的包名
    'appPackage': 'tv.danmaku.bili',
    
    'appActivity': '.ui.splash.SplashActivity'
}

# 启动 APP
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

通用参数:

关键字 描述 实例
automationName 你想使用的自动化测试引擎 Appium (默认) 或 Selendroid
platformName 你要测试的手机操作系统 IOS,Android,Frefox
platformVersion 手机操作系统版本 例如:7.1 或 4.4
deviceName 使用的手机类型或模拟器类型 iPhone Simulator , iPad Simulator , IPhone Retina 4 -inch , Andriod Emulator , Galaxy S4 等。在iOS 上,这个关键字的值必须是使用 instruments -s devices 得到的可使用的设备名称之一。在 Android 上,这个关键字目前不起作用,必须有。
app .ipa or .apkl 文件所在的本地绝对路径或者远程路径,也可以是一个包括两者之一的 zip 。 Appium 会先尝试安装路径对应的应用在适当的真机或模拟器上。针对 Android 系统,如果你指定 appPackage 和 appActivity(具体见下面)的话,那么就可以不指定 app。会与 browserName 冲突 比如 /abs/path/to/my.apk 或 http://myapp.com.app.ipa
browserName 需要进行自动化测试的手机 web浏览器名称。如果是对应用进行自动化测试,这个关键字的值应该为空 IOS 系统上可以用 ‘Safari’,Android 系统上可以用 ‘Chrome’,‘Chromium’,或 ‘Browser’。
newCommandTimeout 设置命令超市时间,单位:秒。达到超时时间仍未接收到新的命令时 Appium 会假设客户端退出然后自动结束会话 比如: 60
autoLaunch Appium 是否需要自动安装和启动应用,默认为:true true,false
language (Sim/Emu-only) 设定模拟器(simulator / emulator)的语言 例如:fr
locale (Sim/Emu-only) 设定模拟器(simulator / emulator)的区域设置。 如:fr_CA
udid 链接的物理设备的唯一标识 例如:1ae203187fc012g
orientation (Sim / Emu-only)在一个设定的方向模式中开始测试 LANDSCAPE( 横向) 或 PORTRAIT(纵向)
noReset 不要在会话前重置应用状态,默认:false true,false
fullReset (ios) 删除整个模拟器目录,(Android)通过卸载 ——而不是清空数据 ——来重置应用状态,在 Android 上,这也会在会话结束后自动清除被测应用。默认值 :false true,false

Android 专用参数

关键字 描述 实例
appActivity 你要从你的应用包中启动的 Android Activity 名称。它通常需要在前面添加,(如:使用 .MainActivity 而不是 MainActivity) MainActivity , .Settings
appPackage 你想运行的 Android 应用的包名 比如:com.example.android.myapp
appWaitActivity 你要等待启动的 Android Activity 名称 SplashActivity
deviceReadyTimeout 设置等待一个模拟器或真机准备就绪的超时时间 5
androidCoverage 用于执行测试的 instrumentation 类。作为命令 adb shell am instrument -e coverage true -w 的 -w 参数 com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
enablePerformanceLogging Chromedriver 的性能日志,默认:false true , false
androidDeviceReadyTimeout 等待设备在启动应用后准备就绪的超市时间,以秒为单位。 /
androidDeviceSocket 开发工具的 socket 名称。 只有在被测应用是一个使用 Chromium 内核的浏览器时需要。 socket 会被浏览器打开,然后 Chromedriver 把它作为开发者工具来进行连接 chrome_devtools_remote
avd 需要启动的 AVD ( 安卓虚拟设备 ) 名称 api19
avdLaunchTimeout 以毫秒为单位,等待 AVD 启动并连接到 ADB 的超时时间。 (默认值 120000) 300000
avdReadyTimeout 以毫秒为单位,等待 AVD 完成启动动画的超时时间。(默认值:120000) 300000
avdArgs 启动 AVD 时需要加入的额外参数 如: -netfast
useKeyStore 使用一个自动以的 keystore 来对 apk 进行重签名。默认值 : false true or false
keyStorePath 自定义 keystore 的路径。默认: ~/.android/debug.keystore 例如:/path/to.keystore

Appium - desired_caps 参数详解_第1张图片

IOS 特有参数

Appium - desired_caps 参数详解_第2张图片
Appium - desired_caps 参数详解_第3张图片

获取 appPackage 与 appActivity 的值:*

方法一:

Appium 中的安卓图标,点击打开以后, Application Path 选着 apk 路径以后就可以查看了
Appium - desired_caps 参数详解_第4张图片

方法二:日志抓取
adb shell
root@shamu:/ # logcat | grep START

先启动需要查找的apk,再敲入以上命令,找到最后一个ActivityManager
Appium - desired_caps 参数详解_第5张图片

方法三:aapt 工具( 推荐 )

使用aapt工具 ,适合给程序自动获取 apk 的相关信息,非常实用,
aaptsdk 自带的一个工具,在 sdk\builds-tools 目录下
1.以微信为例,命令行中切换到aapt.exe目录执行输入以下命令

aapt dump badging D:\weixin658android1060.apk

2.运行后的结果中以下两行分别是应用包名 package 和入口 activity 名称,另外可看到应用使用的权限、支持的语言等信息
Appium - desired_caps 参数详解_第6张图片
Appium - desired_caps 参数详解_第7张图片

你可能感兴趣的:(appium,Python)