1.简介

appium是一个开源、跨平台的自动化测试框架,可用于原生、混合和移动Web应用程序,支持ios、android等平台,基于node.js语言的express框架来编写实现的一套HTTP Server

2.appium设计理念

采用C/S设计模式,并结合WebDriver API来支持多语言,只要Client能够发送HTTP请求给Server,那么Client用什么语言来实现都是可以的

3.appium常见概念

1.C/S架构通过

所谓C/S架构即Client/Sever架构,appium就是基于C/S架构模式,appium的核心是遵守REST设计风格的Web服务器,它接收客户端的连接和命令。

2.Session

Session本质就是会话,appium始终需要在一个session上下文中使用,客户端初始化一个session来与服务端交互,通过发送一个POST请求给服务端,请求包含”Desired Capabilities”的json对象。服务端会开启一个自动化的Session,并返回一个全局的session ID,后续所有的请求都必须带上这个session ID

3.Desired Capabilities

是一些键值对的集合,客户端通过这些键值对发送给appium服务端,告诉服务端需要以什么的配置来执行
常见必传参数包括:
platformName(设备平台类型)
platformVersion(设备系统名称)
deviceName(设备名后者设备序列号)
apppackage(应用包名)
appAcitvity(应用Activity名)

4.appium Server

appium server是appium的核心,基于node.js实现的http服务器。主要功能是接收客户端的连接,监听客户端发来的命令,将命令发送给Bootstrap.jar(IOS端为Bootstrap.js)执行

5.appium客户端

严格来说是一个扩展的WebDriver协议库。负责与appium server建立连接 ,将测试脚本的指令发送到appium server

4.appium工作原理

appium的整体架构有客户端(appium client)和服务端(appium server)两部分组成,客户端和服务器通过JSON Wire Protocol进行通信
appium在android端是基于WebDriver协议的,利用Bootstrap.jar通过调用UiAutomator框架来执行命令
(1)通过客户端实现WebDriver Script
(2)开启appium server服务,发起一个HTTP sever,默认监听端口4723
(3)appium server接收appium Client请求,解析请求内容,将其转发给android设备上的Bootstrap.jar
服务,Bootstrap.jar服务接收到appium server命令,再调用UiAutomator框架执行具体操作
(4)Bootstrap.jar将执行结果返回appium server
(5)appium server再将结果返回appium client

ps:Android 底层测试框架已迁移到UiAutomator2