在面试APP自动化时,有的面试官可能会问Appium的运行原理,以下介绍Appium运行原理。
Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试。它使用WebDriver协议驱动IOS,Android和Windows应用程序。
Appium 旨在满足移动端自动化需求的理念,概述为以下四个原则:
Appium是在手机操作系统自带的测试框架基础上实现的,Android和iOS的系统上使用的工具分别如下:

运行原理如下:
①客户端运行脚本的时候,调用任何的appiumAPI,都会向Appium Server端post一条HTTP请求,请求内容就是根据webdriver wire protocol协议规定的一条JSON格式的数据;
②当开启appium服务器的同时就开启了监听端口,Appium Server端接收到请求后,解析出JSON数据并发送到手机端;
③手机端上已经由BootStrap.jar(iOS为BootStrip.js)开启的socket服务器监听相应的端口,BootStrap.jar在appium每个session第一次访问手机端的时候会自动安装;
④手机端接收到对应的请求后,通过BootStrap.jar翻译成UIAutomator能执行的命令,然后通过UIAutomator处理并操作APP完成测试。
client:其实就是发起 command 的一端,狭义的可以理解为python、java等编写的代码。
appium server: 专门用来监听并接收来自client端的请求,转发请求并控制移动设备执行测试,默认开启并监听4723接口.。
Session:session就是一个会话,在appium中,所有工作永远都是在session start后才可以进行的。而要启动一个 session 需要传入 Desired Capabilities 获取一个全局唯一的 session id,这个id指定了你的浏览器或者移动设备。
Desired Capabilities:是一些发送给 Appium 服务器的键值对集合(比如 map 或 hash),它告诉服务器我们想要启动什么类型的自动化会话。
它告诉 appium server 这样一些事情:
Bootstrap:首先,bootstrap是uiautomator的测试脚本,它的入口类bootstrap继承于UiautomatorTestCase,所以Uiautomator可以正常运行它,它也可以正常使用uiautomator的方法,这是就是appium的命令可以转换成uiautomator的关键;
其次,bootstrap是一个socket服务器,专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理;
最后,bootstrap处理的是从PC端传过来的命令。
appium的架构原理如图所示,由客户端和服务端组成,客户端与服务端通过JSON进行通信。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
