Appium
一、简介
appium是c/s模式的,基于webdriver协议添加对移动设备自动化api扩展而成的,因此具备和webdriver同样的特性,好比多语言支持,webdriver是基于http协议的,第一链接会创建一个session会话,并经过post发送一个json告知服务端相关测试信息.对于Android来讲,4.2之后是基于uiautomator框架实现查找注入事件的,4.2之前则是instrumentation框架的,并封装成,个叫Selendroid这玩意提供服务,客户端只须要发送http请求实现通信,意味着客户端就是多语言支持。appium服务端是node.js写的,因此你安装的时候不管哪一个平台都是先装node。java
二、工做原理
2.1 Android
在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后经过调⽤用UiAutomator的命令,实现App的自动化测试。UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。另外因为UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。node
appium 在android端工做流
client端也就是咱们 test script是咱们的webdriver测试脚本。
android
中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架相似, Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操做。ios
appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终经过调⽤用UiAutomator的命令来实现。web
最后Bootstrap将执行的结果返回给appium server。chrome
appium server再将结果返回给 appium client。json
2.2 ios
在IOS端,appium一样使⽤WebDriver的一套协议。bootstrap
与Android端测试框架不一样的是,appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的⾃自动化测试框架),而后在设备中注⼊入bootstrap.js进⾏行监听。api
appium 在ios端工做流
client端 依然是 test script是咱们的webdriver测试脚本。
session
中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架相似, Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操做。
appium server调用instruments.js 启动⼀一个socket server,同时分出一个⼦子进程运⾏instruments.app,将bootstrap.js(一个UIAutomation脚本)注⼊入到device⽤于和外界进行交互
最后Bootstrap.js将执行的结果返回给appium server
appium server再将结果返回给 appium client。
因此咱们能够看到android与ios区别在于appium 将请求转发到bootstrap.js或者bootstrap.jar.而后由bootstrap 驱动UIAutomation和UiAutomator去devices上完成具体的动做。
三、查看启动日志分析
Appium运行原理 appium能够理解为一个c/s架构软件,在pc端安装的appium server端,经过appium client发送操做命令到app端 ;在启动时,appium会将bootstrap推送到app上,经过并在app端创建端口为4724的socket端口,接受来自Appium的 json命令,经过UIautomaticer操控app上的控件。