appium-原理

appium的架构原理如图所示,由客户端和服务端组成,客户端与服务端通过JSON进行通信;

各部分的含义:

    (1)Appium服务器。它是一个基于node.js的HTTP服务器。主要功能是接受从Appium客户端发起的链接,监听客户端发送来 命令,将命令发送到bootstrap.jar(IOS为bootstrap.js)执行,并将命令的结果通过HTTP应答反馈给Appium客户端。

    (2)Bootstrap.jar。Bootstrap.jar是在Android手机上运行的一个应用程序,它在手机上扮演TCP服务器的角色,当appium服务器需要运行命令时,Appium服务器与Bootstrap.jar建立TCP通讯,并把命令发送给Bootstrap.jar;Bootstrap.jar负责运行测试命令。

    (3)Appium客户端。主要是指实现了Appium功能的webdriver协议的客户端Library,他负责与Appium服务器建立连接,并将测试脚本的指令发送给服务端。包括:python、Java、Ruby等。

    (4)Seesion。Appium的客户端和服务端之间进行通信必须在一个session的上下文中进行。客户端发起通信的时候会首先发送一个叫做“Desired Capabilities”的JSON对象给服务端。服务端接收到该数据后,会创建一个session并将session的ID返回给客户端,之后客户端会用该session的ID发送后续的命令。

    (5)Desired Capalities。Desired Capalities是一组设置的键值对,用于通知Appium服务端建立需要的session,其中一些设置可以改变Appium的运行行为。

     Appium在Android上基于UIAutomator实现了测试的代理程序(Bootstrap.jar),在iOS上基于UIAutomation实现了测试的代理程 序(Bootstrap.js)。当测试脚本运行时,每行WebDriver的脚本都将转换成Appium的指令发送给Appium服务器,而Appium服务器将 测试指令交给代理程序,将由代理程序负责执行测试。比如脚本上的一个点击操作,在Appium服务器上都是touch指令,当指令 发送到Android系统上时,Android系统上的Bootstrap.jar将调用UIAutomator的方法实现点击操作;而当指令发送到iOS系统上 时,iOS的Bootstrap.js将调用UIAutomation的方法实现点击操作。由于Appium有了这样的能力,同样的测试脚本可以实现跨平台运 行。

猜你喜欢

转载自blog.csdn.net/u010098159/article/details/81334684