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. Binary Search - Jump on the Stones

    Binary Search algorithm. Wikipedia definition: In computer science, binary search, also known as hal ...

  2. python format函数的使用

    转载自:http://www.cnblogs.com/kaituorensheng/p/5709970.html python自2.6后,新增了一种格式化字符串函数str.format(),威力十足, ...

  3. HTML5: HTML5 内联 SVG

    ylbtech-HTML5: HTML5 内联 SVG 1.返回顶部 1. HTML5 内联 SVG HTML5 支持内联 SVG. 什么是SVG? SVG 指可伸缩矢量图形 (Scalable Ve ...

  4. 86、使用Tensorflow实现,LSTM的时间序列预测,预测正弦函数

    ''' Created on 2017年5月21日 @author: weizhen ''' # 以下程序为预测离散化之后的sin函数 import numpy as np import tensor ...

  5. spring相关注解

    spring相关注解: 使用之前需要<context:annotation-config/>在配置文件中启用 @Required 应用于类属性的set方法,并且要求该属性必须在xml容器里 ...

  6. Axon 3.0.x 框架简介官方文档

    因为需要用到,但是在网上对应的资料实在是很少,只有迎着头皮看官网文档并配合翻译器.如有误导多多包涵. Axon 什么是 Axon Axon Framework 通过支持开发人员应用命令查询责任隔离(C ...

  7. scala解析json —— json4s 解析json方法汇总

    使用json4s的框架,包括spark,flink 1.org.json4s 引入pom的方法 对于本地支持,引入以下依赖项添加到pom中 <dependency> <groupId ...

  8. vue 各种 import 引入

    vue 各种 import 引入: https://www.jianshu.com/p/784e51ec68ce 阮一峰:http://es6.ruanyifeng.com/#docs/module

  9. Centos7.6安装教程 && history设置显示执行命令的时间

    一.规划磁盘使用空间(磁盘总大小200GB) /dev/sda1 mount /boot 1G mount point /dev/sda2 mount / 100G /dev/sda3 mount / ...

  10. 12-vim-撤销和删除命令-02-删除文本

    删除文本 命令 英文 功能 x cut 删除光标所在字符 d(移动命令) delete 删除移动命令对应的内容 dd delete 删除光标所在行 D delete 从光标位置删除至行尾 注: 如果使 ...