Appium - automation for mobile apps
 
一.Appium架构介绍
官网:www.appium.io
由SauceLab公司主持。并在Google的GATC2013会上被详细介绍。
Appium是由nodejs的express框架写的Http Server。Appium不是它⾃⼰创建⼀套新的测试框
架,是将现有的优秀的框架进⾏了集成,以Selenium WebDriver的协议
(JsonWireProtocol/Restful web service)统⼀起来. 使得这个框架满⾜多⽅⾯的需求。
Appium启动⾃动化测试后,在被测设备上启动⼀个server,监听来⾃Appium server的指
令。不同的平台(如IOS,Android)采⽤不同的运⾏和交换⽅式。Appium将某个桩程序
“侵入”平台,用于接受指令,来完成测试脚本的运行。
特性:
1. 跨平台, native hybrid webview(H5) 
2. 跨设备, android iOS 
3. 跨app,可以在多个app之间交互
4. 不依赖APP开源代码(保留意见。。,android Uiautomator对H5的支持需要代码支持,这里不细说) 
5. 支持Selenium WebDriver / Selenium Grid 
6. 跨语言, java python ruby nodejs 
7. Open Source 
 
二. Appium 在Android端的工作模式
1.架构图
 
简易图:

在Android端,appium基于WebDriver,并利⽤用Bootstrap.js,最后通过调⽤用UiAutomator的命
令,实现App的自动化测试。UiAutomator测试框架是Android SDK⾃自带的App UI自动化测
试Java库。
另外由于UiAutomator对H5的⽀支持有限,appium引入了chromedriver来实现基于H5的自动
化。
2.主要原理:
1.左边的WebDriver script是我们的selenium测试脚本
2.中间是起的Appium的服务,Appium在这边起了一个Server(4723端口),跟selenium
Webdriver测试框架类似,Appium⽀支持标准的WebDriver JSONWireProtocol 。在这里提供
了一套web服务,Appium Server接收web driver 标准请求,解析请求内容,调⽤用对应的框
架响应操作。
如:脚本发送一个点击按钮的请求给appium server,
3. appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.
Bootstrap 接收appium 的命令(4724端口),最终通过调⽤用UiAutomator的命令来实现。
4.最后执⾏行的结果由Bootstrap返回给appium server
5.另外,appium还用到了chromedriver来⽀支持基于H5(webview)的测试。
 
二. Appium 在IOS端的工作模式
 
1.架构图:

简易图:

在IOS端,appium同样使⽤用WebDriver的⼀一套协议。与Android端测试框架不同的是,
appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple
的⾃自动化测试框架),然后在设备中注⼊入bootstrap.js进⾏行监听。
 
2.主要原理
1.左边的WebDriver script是selenium测试脚本
2.中间是起的Appium的服务,Appium在这边起了⼀一个Server(4723端口),跟selenium
Webdriver测试框架类似,Appium⽀支持标准的WebDriver JSONWireProtocol 。在这里提供
了一套web服务,Appium Server接收web driver 标准请求,解析请求内容,调⽤用对应的框
架响应操作。
如:脚本发送一个点击按钮的请求给appium server,
3. appium server调用instruments.js 启动⼀一个socket server,同时分出⼀一个⼦子进程运⾏行
instruments.app,将bootstrap.js(一个UIAutomation脚本)注⼊入到device⽤用于和外界进⾏行交
互。
4.对于H5的操作,运⽤用了 iOS webkit debug proxy来实现
http://appium.io/slate/en/v1.0.0/?java#ios-support
https://github.com/google/ios-webkit-debug-proxy

Appium 工作原理的更多相关文章

  1. [转载]Appium工作原理

    [Appium]Appium工作原理 2017-09-13 15:28 sophia194910 阅读(7658) 评论(0) 编辑 收藏 参考:http://www.cnblogs.com/zhjs ...

  2. Appium 工作原理及 Desired Capabilities

    一.Appium工作原理 脚本请求 --> 4723端口appium server --> 解析参数给PC端4724端口 --> 发送给设备4724端口 --> 通过设备472 ...

  3. appium工作原理

    Appium原理 面试的时候,被问到appium原理,一点不会,实在尴尬.大家可以直接翻看原作https://blog.csdn.net/jffhy2017/article/details/69220 ...

  4. 【Appium】Appium工作原理(2)

    Appium原理 面试的时候,被问到appium原理,一点不会,实在尴尬. 大家可以直接翻看原作https://blog.csdn.net/jffhy2017/article/details/6922 ...

  5. 【Appium】Appium工作原理

    参考:http://www.cnblogs.com/zhjsll/p/5698878.html 原作者写的很好,所以直接放在这里. 一.什么是Appium Appium是一个开源.跨平台的测试框架,可 ...

  6. 1.appium工作原理及环境搭建

    1.appium: 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. 2.工作原理: 3.搭建appium环境: (1)安装python和nod ...

  7. 全网最全最细的appium自动化测试环境搭建教程以及appium工作原理

    一.前言 ​ 对于appium自动化测试环境的搭建我相信90%的自学者都是在痛苦中挣扎,在挣扎中放弃,在放弃后又重新开始,只有10%的人,人品比较好,能够很快并顺利的搭建成功.appium 自动化测试 ...

  8. Appium学习——Appium工作原理

    appium的工具原理 Appium-client>>>>Appium-server>>>>移动设备 ========================= ...

  9. 移动端自动化测试之Appium的工作原理学习

    Appium 简介 参考官网文档说明:http://appium.io/docs/en/about-appium/intro/ Appium官方文档上介绍,Appium 是一个自动化测试的开源工具,支 ...

随机推荐

  1. String Algorithm Summary - 1

    目录 Suffix Array Summay 单个字符串问题 两个字符串问题 多个字符串问题 AC-Automaton Summary 求长度为n(2e9)不包含给定字符串的合法串个数 包含至少一个词 ...

  2. HTML5: HTML5 新元素

    ylbtech-HTML5: HTML5 新元素 1.返回顶部 1. HTML5 新元素 自1999年以后HTML 4.01 已经改变了很多,今天,在HTML 4.01中的几个已经被废弃,这些元素在H ...

  3. Openstack组件部署 — Overview和前期环境准备

    目录 目录 前言 软件环境 Openstack 简介 Openstack 架构 Openstack Install Overview 创建Node虚拟机 环境准备 基础设置 Install OpenS ...

  4. Jlink 接口定义

    JTAG有10pin的.14pin的和20pin的,尽管引脚数和引脚的排列顺序不同,但是其中有一些引脚是一样的,各个引脚的定义如下. 1. 引脚定义 Test Clock Input (TCK) -- ...

  5. DPL, CPL及RPL之间的关系

    DPL: Descriptor Privilege Level 1) GDT/LDT表中的描述符 GDT/LDT表中的描述符,描述的是一段内存. 其中的DPL代表着GDT/LDT中的描述符描述的内存段 ...

  6. python作业/练习/实战:生成双色球小程序

    作业要求: 每注投注号码由6个红色球号码和1个蓝色球号码组成.红色球号码从1--33中选择:蓝色球号码从1--16中选择 代码范例 import random all_red_ball = [str( ...

  7. Python面试题之下面代码会输出什么

    def f(x,l=[]): for i in range(x): l.append(i*i) print l f(2) f(3,[3,2,1]) f(3) 答案: [0, 1] [3, 2, 1, ...

  8. UVA 12821 Double Shortest Paths

    Double Shortest PathsAlice and Bob are walking in an ancient maze with a lot of caves and one-way pa ...

  9. React-Native 使用中的坑

    android 1.键盘会在 ScrollView 之上----不知道是不是未给ScrollView 设置高度的问题 2.navigation的标题在android居中显示办法 navigationO ...

  10. Elastic-Job分布式任务调度

    任务调度是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程,有了任务调度即可解放更多的人力由系统自动去执行任务. 多线程方式实现: Timer方式实现: ScheduledExecutor ...