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 |
关键字 | 描述 | 实例 |
---|---|---|
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 中的安卓图标,点击打开以后, Application Path 选着 apk 路径以后就可以查看了
adb shell
root@shamu:/ # logcat | grep START
先启动需要查找的apk,再敲入以上命令,找到最后一个ActivityManager
使用aapt工具 ,适合给程序自动获取 apk 的相关信息,非常实用,
aapt 是 sdk 自带的一个工具,在 sdk\builds-tools 目录下
1.以微信为例,命令行中切换到aapt.exe目录执行输入以下命令
aapt dump badging D:\weixin658android1060.apk
2.运行后的结果中以下两行分别是应用包名 package 和入口 activity 名称,另外可看到应用使用的权限、支持的语言等信息