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. kvm无人值守安装centos6

    nginx配置 server { listen default_server; server_name _; root /home/iso; # Load configuration files fo ...

  2. 2018icpc南京/gym101981 I Magic Potion

    题意: 若干个勇士,每个勇士只能杀特定的怪物.每个勇士只能杀1个怪,但是有一些药,喝了药之后能再杀一个,每个勇士只能喝一瓶药.问你最多杀多少怪. 题解: 按照如下建图套网络流板即可. 网上有题解说套D ...

  3. php开发面试题---Apache 运行PHP原理(整理)

    php开发面试题---Apache 运行PHP原理(整理) 一.总结 一句话总结: 不要忘记 php引擎将页面静态化 和 php引擎和apache之间通讯 反思的回顾非常有用,因为决定了我的方向和技巧 ...

  4. spring boot starter开发

    作为公司的技术保障部,一直承担着技术方向的把控,最近公司准备全面转入spring boot的开发.所以我们部门也一直在调研相关的技术知识点: 使用springboot开发应用已经有一段时间了,我们都沉 ...

  5. CTF隐写——越光宝盒

    0x题目 原题来自于实验吧:http://www.shiyanbar.com/ctf/1992 一句话,和一个PNG图片. 0x解题 1.下载图片以后,发现打不开. 首先想到的就是文件头可能被修改了, ...

  6. mac查看python安装路径

    1.terminal : input: which Python 或者 which Python3 2.terminal: input : python  --->import sys  --- ...

  7. Spring Boot控制上传文件大小

    spring: http: multipart: max-file-size: 5MB max-request-size: 20MB

  8. c# 关于DataTable

    1.DataRow数组 转DataTable using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=123;da ...

  9. 防止按钮重复点击的思路(js篇)

    最直接的思路可能就是点击按钮后,按钮的事件绑定函数解绑,1s后重新绑定函数 <button id=</button> <script> btn.onclick = fun ...

  10. 9、springcloud整合logback打印sql语句

    Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core.logback- classic和logback-access.logback-c ...