Appium的详细介绍

1、Appium 是什么?
Appium是一个开源的,适用于原生或混合移动应用( hybrid mobile apps )的自动化测试工具,Appium应用WebDriver: JSON wire protocol驱动安卓和iOS移动应用。

2、Appium的特点:
支持多平台(Android、iOS等)
支持多语言(python、java、ruby、js、c#等)
Appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。
Appium选择了Client/Server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是如何做到支持多语言的原因;
Appium扩展了WebDriver的协议,没有自己重新去实现一套。这样的好处是以前的WebDriver API能够直接被继承过来,以前的Selenium(WebDriver)各种语言的binding都可以拿来就用,省去了为每种语言开发一个client的工作量。

3、Appium的哲学:
不需要重新编译或者修改应用
不被一种语言或者框架约束
不重复造*
开源免费
4、Appium原理:
Appium的详细介绍Appium是c/s架构的 ;
Appium是基于webdriver协议添加了对移动设备自动化api扩展而成的, webdriver是基于http协议的,第一连接会建立一个session会话,并通过post发送一个json告知服务端相关测试信息 。
Appium会首先开启一个监听4723端口的server,接收测试脚本发送过来的对应请求,再将对应的请求发送给中间件Bootstrap.jar(比如点击一个APP中的一个Button就是一条请求)。
Bootstrap.jar:
  监听4724端口由Appium发送过来的相关请求,并且将请求转换成UiAutomator可以识别的命令发给UiAutomator进行处理。
那么Bootstrap作用是什么?
Bootstrap是Appium在初始化的时推送到Android手机上的一个UiAutomator测试脚本,该脚本的唯一一个测试方法所做的事情是在手机端开启一个SocketServer(通信模块),用来监听Appium从PC端过来的命令发送给UiAutomator来执行处理。它会监听4724端口获得命令然后传递给UiAutomator来做处理。
Bootstrap是uiautomator的测试脚本,它的入口类bootstrap继承于UiautomatorTestCase, 所以Uiautomator可以正常运行它 ,它也可以正常使用uiautomator的方法,这个就是appium的命令可以转换成uiautomator命令的关键;
其次,bootstrap是一个socket服务器,专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理;

总体来说:
AppiumBootstrap是一个jar包; Appium会将这个jar包打到device中; 然后使用adb shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap会使用一个SocketServer用于监听发送过来的命令; 得到命令之后,扔给Uiautomator执行;