Appium—简介

Appium简介

Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol.php

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

Appium优点

  • 能够跨平台同时支持android、ios
  • 支持多种语言,java、python、php、Ruby等等
  • 不用为复杂的环境发愁
  • 若是你有selenium经验,直接上手。

Appium自动化操做演示

纸上谈兵终觉浅绝知此事要躬行,详见视频教程演示java

演示场景
  1. 自动安装考研帮App(kaoyan3.1.0.apk),而后启动App
  2. 检测是否有升级弹窗,若是有则点击取消按钮,
  3. 而后检测是否有引导页面,若是有则自动点击跳过按钮

Appium架构原理

Appium是在手机操做系统自带的测试框架基础上实现的,Android和iOS的系统上使用的工具分别以下:python

  • 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来在设备上执行自动化。android

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

Appium服务器

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

Bootstrap.jar。

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

Appium客户端。

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

Appium组件

Appium Server

Appium Server就是Appium的服务端——一个web接口服务,使用Node.js实现。引用官网解释说明。objective-c

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 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

 

Appium-desktop

Appium-desktop主界面包含三个菜单Simple,Advanced、Presets

Simple

host

设置Appium server的ip地址,本地调试能够将ip地址修改成127.0.0.1

port

设置端口号,默认是4723不用修改

start server

启动 Appium server

Advanced

高级参数配置修改,主要是一些Android和iOS设备,log路径等相关信息的配置。

presets

将Advanced中的一些配置信息做为预设配置。

启动Appium

启动后控制台提示以下信息,表示Appium启动成功。

 

[Appium] Welcome to Appium v1.7.2

[Appium] Non-default server args:

[Appium]   address: 127.0.0.1

[Appium] Appium REST http interface listener started on 127.0.0.1:4723

参考资料

https://github.com/appium/appium-desktop

相关文章
相关标签/搜索