Appium原理精讲
Appium原理精讲
目前使用Appium新版本和旧版本的企业数目都很多,而两个版本的安装过程和api的使用又有较大的区别。但是无论表面上的东东如何变化,内部原理都是一样的。在这里我给大家介绍一下appium的核心,增进大家对它的理解,相信这会对大家后期的使用有很大的帮助。
Appium概念
Appium是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台。Appium
驱动苹果的 UIAutomation 库和 Android 的 UiAutomator 框架,使用 Selenium 的 WebDriver JSON 协议。Appinm 的 iOS 支持是基于 Dan Cuellar's 的 iOS Auto. Appium 同时绑定了Selendroid 用于老的 Android 平台测试(SDK < 16)。
官网:http://appium.io/
Github:https://github.com/appium/appium
特性
1. 跨平台, native/ hybrid/ webview(H5)
2. 跨设备, android/iOS
3. 跨app,可以在多个app之间交互
4. 不依赖APP开源代码
5. 支持Selenium WebDriver / Selenium Grid
6. 跨语言, java/python/ruby
7. Open Source
框架介绍
Appium是由nodejs的express框架写的HttpServer。Appium不是它⾃⼰创建⼀套新的测试框架,是将现有的优秀的框架进行了集成,以Selenium
WebDriver的协议(JsonWireProtocol/Restful web service)统⼀起来.使得这个框架满⾜多⽅⾯的需求。Appium启动自动化测试后,在被测设备上启动⼀个server,监听来⾃ Appium server的指令。不同的平台(如IOS,Android)采⽤不同的运⾏和交换⽅式。Appium将某个桩程序“侵入”平台,用于接受指令,来完成测试脚本的运行。在Android端,appium基于WebDriver,并利用Bootstrap.js,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。另外由于UiAutomator对H5的支持有限,appium引入了chromedriver来实现基于H5的自动化。
原理图(Android)
分析:
1.左边的Code(WebDriver script)是我们的appium测试脚本。
2.中间是开起的Appium的服务(不同的系统需要安装与之对应的Appium server,这也就是appium可以同时支持android、ios以及windows应用进行自动化测试的原因。在这里以android为例进行说明)Appium在这边起了一个Server(4723端口),跟selenium Webdriver测试框架类似,Appium支持标准的WebDriver JSONWireProtocol。在这里提供了一套web服务,Appium Server接收webdriver标准请求,解析请求内容,调⽤用对应的框架响应操作。如:脚本发送一个点击按钮的请求给appium server。
3. appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上。Bootstrap接收 appium 的命令(4724端口),最终通过调⽤用UiAutomator的命令来实现。
4.最后执⾏ 的结果由Bootstrap返回给appium server。
5.另外,appium还用到了chromedriver来支持基于H5(webview)的测试。