ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## Appium 服务器初始化参数(Capability) Desired capabilities是自动化脚本与Appium服务器建立会话时,发送给 Appium 服务器的键值对集合 (比如 map 或 hash),告诉服务器我们想要启动什么类型的自动化会话。<br> 例如,我们可以把 platformName capability 设置为 iOS,告诉 Appium 我们想要 iOS 会话,而不是 Android 或者 Windows 会话。我们也可以设置 safariAllowPopups capability 为 true ,确保我们在 Safari 自动化会话中可以使用 javascript 打开新窗口。 --- ### 设置Capability ```python desired_caps = { 'appPackage': 'com.example.android.contactmanager', 'appActivity': '.ContactManager', 'platformName': 'Android', 'platformVersion': '5.1.1', 'deviceName': 'Android Emulator', 'app': 'D://ContactManager.apk', 'unicodeKeyboard':True, 'resetKeyboard':True } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) ``` --- ### Capability参数项 | 键 | 描述 | 值 | |---|---|---| | automationName | 自动化测试的引擎 | Appium (默认)或者 Selendroid | | **platformName** | 使用的手机操作系统 | iOS, Android, 或者 FirefoxOS | | **platformVersion** | 手机操作系统的版本 | 例如 7.1, 4.4 | | **deviceName** | 使用的手机或模拟器类型 | iPhone Simulator, Android Emulator, Galaxy S4, 等等 | | **appPackage** | 运行的 Android 应用的包名 | com.example.android.myApp, com.android.settings | | **appActivity** | Activity 的名字是指从你的包中所要启动的 Android acticity。他通常需要再前面添加`. ` | MainActivity, .Settings | | **app** | 本地绝对路径_或_远程 http URL 所指向的一个安装包(.ipa,.apk,或 .zip 文件)。如果您指定了 appPackage 和 appActivity 参数(见下文),Android 则不需要此参数了。 | /abs/path/to/my.apk 或 http://myapp.com/app.ipa | | unicodeKeyboard | 使用 Unicode 输入法。 默认值为 false ,**设置为true后才能输入中文** | true或false | | resetKeyboard | 在设定了 unicodeKeyboard 关键字的 Unicode 测试结束后,重置输入法到原有状态,默认值为 false | true或false | | noReset | 在当前 session 下不会重置应用的状态。默认值为 false,设置为true后,不需要每次运行用例都安装apk | true或false | 更多Capability,参考:[http://appium.io/docs/cn/writing-running-appium/caps/index.html](http://appium.io/docs/cn/writing-running-appium/caps/index.html) --- ## 获取appPackage与appActivity 方法一:推荐使用aapt工具,aapt是sdk自带的一个工具,在sdk\build-tools目录下 ```cmd E:\android_sdk\build-tools\25.0.1>aapt dump badging D:\ContactManager.apk package: name='com.example.android.contactmanager' versionCode='1' versionName='1.0' platformBuildVersionName='' sdkVersion:'5' targetSdkVersion:'5' ... launchable-activity: name='com.example.android.contactmanager.ContactManager' label='Contact Manager' icon='' .. ``` 通过本实例,可得知 appPackage = com.example.android.contactmanager appActivity = com.example.android.contactmanager.ContactManager --- ## 查看当前activity名称 打开APP进入到对应的窗口后,执行命令 `adb shell dumpsys window w |findstr \/ |findstr name=` ```cmd E:\>adb shell dumpsys window w |findstr \/ |findstr name= mSurface=Surface(name=com.example.android.contactmanager/com.example.android.contactmanager.ContactAdder) ``` 通过上面结果得知,当前的activity名称为“com.example.android.contactmanager.ContactAdder”