1、简介
appium是c/s模式的,基于webdriver协议添加对移动设备自动化api扩展而成的,所以具有和webdriver一样的特性,比如多语言支持,webdriver是基于http协议的,第一连接会建立一个session会话,并通过post发送一个json告知服务端相关测试信息.对于Android来说,4.2以后是基于uiautomator框架实现查找注入事件的,4.2以前则是instrumentation框架的,并封装成,个叫Selendroid这玩意提供服务,客户端只需要发送http请求实现通讯,意味着客户端就是多语言支持。appium服务端是node.js写的,所以你安装的时候无论哪个平台都是先装node。
2、工作原理
2.1 Android
在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调?用UiAutomator的命令,实现App的自动化测试。UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。
appium 在android端工作流
-
client端也就是我们 test script是我们的webdriver测试脚本。
-
中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium?持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调?用对应的框架响应操作。
-
appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调?用UiAutomator的命令来实现。
-
最后Bootstrap将执行的结果返回给appium server。
-
appium server再将结果返回给 appium client。
2.2 ios
在IOS端,appium同样使?WebDriver的一套协议。
与Android端测试框架不同的是,appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的?自动化测试框架),然后在设备中注?入bootstrap.js进?行监听。
appium 在ios端工作流
-
client端 依然是 test script是我们的webdriver测试脚本。
-
中间是起的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上完成具体的动作。
3、查看启动日志分析
Appium运行原理
appium可以理解为一个c/s架构软件,在pc端安装的appium server端,通过appium client发送操作命令到app端
;在启动时,appium会将bootstrap推送到app上,通过并在app端建立端口为4724的socket端口,接受来自Appium的
json命令,通过UIautomaticer操控app上的控件。
#关闭Appium server
> Killed Node Server.
> Appium server process ended
#启动appium server 端口 4723
> Launching Appium server with command: C:Program Files (x86)Appiumnode.exe libservermain.js –address 127.0.0.1 –port 4723 –platform-name Android –platform-version 23 –automation-name Appium –log-no-color
> info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d)
> info: Appium REST http interface listener started on 127.0.0.1:4723
#Appium server的基本信息
> info: [debug] Non-default server args: {“address”:”127.0.0.1″,”logNoColors”:true,”platformName”:”Android”,”platformVersion”:”23″,”automationName”:”Appium”}
#控制台日志信息
> info: Console LogLevel: debug
#发送“期望能力”nbsp; 设备信息
> info: –> POST /wd/hub/session {“capabilities”:{“desiredCapabilities”:{“app”:”D:\workspace3\AppiumTest\src\apps\niuguwang-68.apk”,”appPackage”:”com.niuguwang.stock”,”noReset”:”True”,”noSign”:”True”,”platformVersion”:”5.1.1″,”unicodeKeyboard”:”True”,”platformName”:”Android”,”deviceName”:null,”resetKeyboard”:”True”},”requiredCapabilities”:null},”desiredCapabilities”:{“app”:”D:\workspace3\AppiumTest\src\apps\niuguwang-68.apk”,”appPackage”:”com.niuguwang.stock”,”noReset”:”True”,”noSign”:”True”,”platformVersion”:”5.1.1″,”unicodeKeyboard”:”True”,”platformName”:”Android”,”deviceName”:null,”resetKeyboard”:”True”},”requiredCapabilities”:null}
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!