自动化工具 Appium 相关介绍

泰斯特尔·安吉尼尔 · June 13, 2019 · 831 hits

Appium 简介
Appium 是一个开源测试自动化框架,可用于原生,混合和移动 Web 应用程序测试。 它使用 WebDriver 协议驱动 iOS,Android 和 Windows 应用程序。

Appium 官网
Appium github 主页
官方中文文档
Appium 官方论坛
Testerhome 中文社区

  • Appium 优势
    • 可以跨平台同时支持 android、ios
    • 支持多种语言,java、python、php、Ruby 等等
    • 不用为复杂的环境发愁
    • 如果你有 selenium 经验,直接上手。

Appium 架构原理

  • Appium 是在手机操作系统自带的测试框架基础上实现的,Android 和 iOS 的系统上使用的工具分别如下:
    • Android(版本>4.3):UIAutomator,Android 4.3 之后系统自带的 UI 自动化测试工具。
    • Android(版本≤4.3):Selendroid,基于 Android Instrumentation 框架实现的自动化测试工具。
    • iOS:UIAutomation(instruments 框架里面的一个模板),iOS 系统自带的 UI 自动化测试工具。

运行原理

我们的电脑(client)上运行自动化测试脚本,调用的是 webdriver 的接口,appium server 接收到我们 client 上发送过来的命令后他会将这些命令转换为 UIautomator 认识的命令,然后由 UIautomator 来在设备上执行自动化。

Appium 的架构原理如上图所示,由客户端(Appium Client)和服务器(Appium Server)两部分组成,客户端与服务器端通过 JSON Wire Protocol 进行通信。

Appium 服务器
Appium 服务器是 Appium 框架的核心。它是一个基于 Node.js 实现的 HTTP 服务器。Appium 服务器的主要功能是接受从 Appium 客户端发起的连接,监听从客户端发送来的命令,将命令发送给 bootstrap.jar(iOS 手机为 bootstrap.js)执行,并将命令的执行结果通过 HTTP 应答反馈给 Appium 客户端。

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

Appium 客户端
它主要是指实现了 Appium 功能的 WebDriver 协议的客户端 Library,它负责与 Appium 服务器建立连接,并将测试脚本的指令发送到 Appium 服务器。现有的客户端 Library 有多种语言的实现,包括 Ruby、Python、Java、JavaScript(Node.js)、Object C、PHP 和 C#。Appium 的测试是在这些 Library 的基础上进行开发的。

Appium 组件

Appium Server
Appium Server 就是 Appium 的服务端——一个 web 接口服务,使用 Node.js 实现。引用官网解释说明。
Appium is a server written in Node.js. It can be built and installed from source or installed directly from NPM:
$ npm install -g appium
$ appium

Appium Desktop
Appium Desktop 是一款适用于 Mac,Windows 和 Linux 的开源应用程序,它以美观而灵活的用户界面为您提供 Appium 自动化服务器的强大功能。 它是几个 Appium 相关工具的组合:
1.Appium Server 的图形界面。 您可以设置选项,启动/停止服务器,查看日志等,也不需要使用 Node 的 NPM 来安装 Appium,因为 Node 运行时与 Appium Desktop 捆绑在一起。
2.您可以使用 Inspector 查看应用程序的元素,获取有关它们的基本信息,并与它们进行基本的交互。

注意
Appium Desktop 与 Appium 不同。 Appium Desktop 是 Appium 的图形前端,带有其他工具。 Appium Desktop 以其自己的节奏发布,并拥有自己的版本控制系统。 就像国内很多定制的 Android 系统有自己版本号,但是都是基于一个 Android 系统版本封装的。版本号不一定与 Andriod 原生系统版本号一致。如:魅族的 flyme6.0 系统的内核是 Android 5.1

Appium GUI
Appium GUI 是 Appium desktop 的前身。 这个也是把 Appium server 封装成了一个图形界面,降低使用门槛,如同最初的操作系统 Dos 都是敲命令,后面都是图形界面操作系统,如 Windows 系统。很多初学者对下面这个界面应该不陌生吧,这个就是 Windows 版本的 Appium GUI 界面。测试人员可以手动启动,配置相关 server 服务,如果不用这个启动的话,需要命令启动服务。因为大部分教程都是基于这个 GUI 来讲解的,所以很多人一说 Appium 就认为是这个。
该产品的 Windows 版本在 2015 年的 AppiumForWindows_1_4_16_1.zip 之后就停止更新了。目前版本可以使用,但是封装的不是最新的 Appium 版本,而是 1.4.16 版本。如果要使用最新的桌面版需要使用 Appium Desktop。

历史版本下载
Appium-desktop 下载地址
Appium-desktopx 项目地址

Appium Clients
因为 Appium 是一个 C/S 结构,有了服务端的肯定还有客户端,Appium Clients 就是客户端,它会给服务端 Appium Server 发送请求会话来执行自动化任务。就像我们浏览器访问网页,浏览器是客户端,通过操作发送请求服务器来获取数据。我们可以使用不同的客户端浏览器(IE,Firefox,Chrome)访问一个网站。 Appium 客户端可以使用不同的语言来实现,如 Python,java 等。
具体详见下表:
| Language/Framework | Github Repo and Installation Instructions |

| Ruby | https://github.com/appium/ruby_lib |
| Python | https://github.com/appium/python-client |
| Java | https://github.com/appium/java-client |
| JavaScript (Node.js) | https://github.com/admc/wd |
| Objective C | https://github.com/appium/selenium-objective-c |
| PHP | https://github.com/appium/php-client |
| C# (.NET) | https://github.com/appium/appium-dotnet-driver |
| RobotFramework | https://github.com/jollychang/robotframework-appiumlibrary |

参考资料
https://github.com/appium/appium-desktop

No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up