一.Appium整体工作原理
web自动化selenium webdriver 是c/s模式,server端和client端是通过webdriver protocol实现的,而Appium是参考selenium开发的,采用也是webdriver 协议(该协议是基于http的),而底层封装不同平台的测试工具;appium是一个远程服务器,它的Json wire protocol继承自selenium的webdriver wire protocol并进行了扩展,使得Json wire protocol能控制不同的移动设备行为;
当开启appium服务器的同时已经开启了监听端口,运行脚本时调用任意的appium API,都会像Appium Server端post一条HTTP请求,请求内容是根据webdriver wire protocol协议规定的一条JSON格式的数据,Appium Server端接收到请求后解析JSON数据发送到手机端,手机端由BootStrap.jar(iOS为BootStrip.js)开启的socket服务器监听相应的端口(基于TCP/IP协议),BootStrap.jar在appium每个session第一次访问手机端的时候会自动安装(实际为appium server启用4724的同时通过adb push一个. BootStrap脚本),手机端接收对应的请求后通过BootStrap.jar翻译成UIAutomator能执行的命令,然后通过UIAutomator处理并操作APP完成相应的测试;
1.Appium Android平台架构图:
原理:
1)client端是我们的test script,也就是我们的APP自动化测试脚本。
2)中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似,Appium⽀持标准的WebDriver JSONWireProtocol;在这里提供了一套REST的接口,Appium Server接收webdriver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。
3)appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上的.Bootstrap监听4724端口并接收