appium 运行原理:
电脑(client)上运行自动化测试脚本,调用的是webdriver的接口, appium server接收到我们client上发送过来的命令后他会将这些命令转换未Uiautomator认识的命令,然后由Uiautomator来在设备上执行自动化
Appium由客户端(Appium Client)和服务器(Appium Server)两部分组成,客户端与服务器端同过Json wire protocol进行通信
Appium服务器:
Appium服务器是Appium框架的核心,它是一个基于Node.js实现的http服务器,appium服务器的主要功能是接受从appium客户端发起的连接,监听从客户端发送过来的命令,将命令发送给bootstrap.jar(ios 为bootstrap.js)执行,并将命令的执行结果通过http应答反馈给appium客户端
Bootstrap.jar:(Android 4.3以上)
是android手机上运行的一个应用程序,它在手机上扮演tcp服务器的角色,当appium服务器需要运行命名时,appium服务器会与bootstrap.jar建立tcp通信,并把命令发送给bootstrap.jar。bootstrap负责运行测试命令。
Appium客户端:
主要是实现了appium功能的webdriver协议的客户端library,它负责与appium服务器建立链接,并将测试脚本的指令发送到appium服务器。现有的客户端library有多种语言的实现 ruby、python、java等。appium的测试是在这些library的基础上进行开发的。
环境安装:appium-desktop (已封装appium server和node.js) 但是太耗内存。
安装node.js 后 npm config set registry https://registry.npm.taobao.org 安装appium
cmd 命令:where appium 查看appium包
cmd 命令:appium -v 查看appium的版本
cmd命令:appium 运行appium
安装appium-doctor:检测appium整体依赖环境配置情况
所有环境安装完成后, cmd命令 cnpm install appium-doctor -g
在命令:appium-doctor 后可以看到提示说明整体环境配置成功
Capability:
desired capability的功能是配置appium会话,他们告诉appium服务器你想要自动化的平台和应该程序。通过键值对来通知appium服务器建立需要的session
session:
appium的客户端和服务端之间进行通信都必须在一个session的上下文中进行。客户端在发起通信的时候首先会发送一个叫作desired capability 的json对象给服务器。服务器收到该数据后,会创建一个session并将session的ID返回到客户端。之后客户端可以用该session的ID发送后续的命令。
常见Capability配置:(三个部分:公共、Android、iOS)
常见重要公共:
platformName: 平台的名称:iOS, Android, or FirefoxOS
platformVersion:移动设备的系统版本号,7.1, 4.4
deviceName:命令devices
app:安装文件路径
noReset:在当前session前不重置app状态,默认为false
Android:
appActivity:要启动的Activity
appPackage:要启动的包
appWaitActivity: 等待的Activity
iOS:
bundleId:被测应用的bundleld id,用于真机启动测试
udid:连接真机唯一设备编号