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.

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

Appium优势

Appium自动化操作演示

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

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

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

Appium简介的更多相关文章

  1. Appium简介及原理

    1.Appium简介 Appium是一个开源.跨平台的,适用于原生或混合移动应用(hybrid mobile apps)的自动化测试平台.Appium使用WebDriver(JSON wire pro ...

  2. Appium 简介与自动化测试环境搭建

    1. Appium 简介 2. Appium 自动化测试环境搭建 1. Appium 简介 Appium 是一个开源测试自动化框架,可用于原生,混合和移动 Web 应用程序测试. 它使用 WebDri ...

  3. Mac上安装Appium简介

    刚接触appium,记录下心得 提前准备:mac本 1.安装homebrew 安装前首先必须先安装homebrew才行,homebrew是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或 ...

  4. Appium简介及工作原理

    一.什么是Appium Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriver ...

  5. Appium简介和初步使用520-1

    1.移动互联网架构简化图 2.Appium的优势 * 多种开发模式支持 native hybrid webview * 多平台支持 android ios * 跨语言 java python ruby ...

  6. Appium 简介及工作原理

    申请:本文介绍主要是针对Android. 1.什么是Appium: Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及Firefox ...

  7. Appium简介以及环境安装

    官网地址 Appium 是一个自动化测试开源工具,支持多平台上的原生应用,web应用和混合应用,是由appium server和appium Client两部分组成通过json wire protoc ...

  8. Appium官网Introduction

    英文官网:http://appium.io/introduction.html?lang=zh Appium 简介 Appium是一个开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏 ...

  9. appium初步认识

    Appium简介: appium官网:http://appium.io/ 一.什么是appium Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS. ...

随机推荐

  1. Vue2.0源码阅读笔记(二):响应式原理

      Vue是数据驱动的框架,在修改数据时,视图会进行更新.数据响应式系统使得状态管理变的简单直接,在开发过程中减少与DOM元素的接触.而深入学习其中的原理十分有必要,能够回避一些常见的问题,使开发变的 ...

  2. html 和css 效果--整理集合篇

    一.如何用一张图片做背景图,并且图片自适应div的大小 background: url("../stu_wengu.png") center center no-repeat; b ...

  3. Flink从入门到放弃(入门篇3)-DataSetAPI

    戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...

  4. 解读 kubernetes client-go 官方 examples - Part Ⅰ

    目录 1. 介绍 2. 运行测试 2.1 测试环境 2.2 运行结果 3. 原理解析 3.1 获取 kubeconfig 信息,并构造 rest#Config 实例 3.1.1 tools/clien ...

  5. SQL 注入~MySQL专题

    Recently, 团队在做一个关于SQL的项目,这个专题是项目中的一部分,该部分正是由我来负责的.今天,分享给正在奋斗中的伙伴们,愿,你们在以后的学习道路中能有自己的收获.              ...

  6. jquery获取元素(父级的兄弟元素的子元素)

    一.获取父级元素 使用jquery获取父级元素: parent() 例如:$(this).parent('ul'); 二.获取同级元素 使用jquery获取同级元素:siblings() 例如:$(t ...

  7. 告别 hash 路由,迎接 history 路由

    博客地址:https://ainyi.com/69 三月来了,春天还会远吗.. 在这里,隆重宣布本博客告别 Vue 传统的 hash 路由,迎接好看而优雅的 history 路由~~ 映照官方说法 v ...

  8. JS里charCodeAt()和fromCharCode()方法拓展应用:加密与解密

    JS实现客户端的网页加密解密技术,可用作选择性隐蔽展示.当然客户端的加密安全度是不能与服务器相提并论,肯定不能用于密码这类内容的加密,但对于一般级别的内容用作展示已经够了. JS加密与解密的解决方案有 ...

  9. 【译】使用 LINQ 合并 IEnumerable 序列

    Zip 方法允许把序列中的元素通过交织将 IEnumerable 序列连接在一起.Zip 是一种基于 IEnumerable 的扩展方法.例如,将具有年龄的名称集合压缩在一起: var names = ...

  10. SpringMVC与Struts2的主要区别

    区别1: Struts2 的核心是基于一个Filter即StrutsPreparedAndExcuteFilterSpringMvc的核心是基于一个Servlet即DispatcherServlet( ...