Appium—Android
- Android 使用uiautomator2来查找界面元素。
- webdriver 是基于 http 协议的,第一连接会建立一个 session 会话,并通过 post 发送一个 json 告知服务端相关测试信息。
- client/server 设计模式。
- 客户端通过 webdriver json wire 协议与服务器通讯。
- 多语言支持。
- server 可以放在任何地方。
- 服务器 nodejs 开发的 http 服务。
- appium 使用 appium-xcuitest-driver 来测试 iphone 设备,其中需要安装 Facebook 出的 WDA(webdriver agent) 来驱动 ios 测试。
Appium配合的工具
- appium Destkop:内嵌 appium server 和 inspector 的综合工具。
- appium server:appium 的核心工具,命令行工具。
- appium client:各种语言的客户端封装库,用户连接 appium server,包含 python、java、ruby 等。
- appcrawler 自动遍历工具。
获取应用包信息
- adb shell pm list packages 查看设备中所有的包 。
- adb shell pm list packages -e 只输出启用的包。
- adb shell pm list packages -3 只输出第三方的包。
- adb shell pm list packages -f 输出包和包相关联的文件。
- adb shell dumpsys activity top 获取当前页面元素。
- adb shell dumpsys activity activities 获取任务列表。
- adb shell am start -W -n “xxx” -S 启动应用。
- 获取appActivity:aapt dump badging xxxx.apk | find "launchable-activity"
- 获取appPackage:aapt dump badging xxxx.apk | find "package: name="
Desired Capabilities 配置信息
Capabilities:是一组设置的键值对的集合,其功能为:对Appium会话进行配置,传达给服务器所需自动化的平台和应用程序,通知Appium Server建立所需要的Session信息;session是
Appium的Client和Server之间进行通信,必须在一个Session的上下文中进行。Client发起通信时,首先会发送一个"Desired Capabilities"的JSON对象给Server,Server收到该数据后会创建一个session,并将sessionID返回到客户端。
appium参数配置地址:http://appium.io/docs/cn/writing-running-appium/caps/;https://github.com/appium/appium/blob/master/docs/cn/writing-running-appium/caps.md。
appium客户端会话:Automatic Server:本地Appium Server服务
Custom Server:针对运行在网络中的另一台设备上的Appium服务器启动Inspector会话
Sauce Labs:利用Sauce Labs帐户在云测平台启动Appium会话
TestObject:利用TestObject调用真机进行测试
headspin:使用远程设备来创建会话。
noRest:若取值为true,则在Session有效期内每次登录可维持登录状态而不会被动退出;若取值为false,则每次登录都需要输入用户名和密码登录 。
问题记录:
启动时遇到的问题:An unknown server-side error occurred while processing the command. Original error: Error getting device API level. Original error: Error executing adbExec. Original error: 'Command '/android-sdk-macosx/platform-tools/adb -P 5037 -s d69721e shell getprop ro.build.version.sdk' timed out after 20000ms'. 启动应用时遇到该问题,根据参数配置"adbExecTimeout":"200000",重启手机,重启appium服务,启动成功