appium工作原理
Appium原理
面试的时候,被问到appium原理,一点不会,实在尴尬。
大家可以直接翻看原作https://blog.csdn.net/jffhy2017/article/details/69220719
appium运行时安装的2个应用:Appium Settings和Unlock。
一、appium加载的过程图解:

appium的加载过程
- 1.调用Android adb完成基本的系统操作
- 2.向Android上部署bootstrap.jar
- 3.bootstrap.jar Forward Android的端口到PC机器上
- 4.PC上监听端口接收请求,使用webdriver协议
- 5.分析命令并通过forward 端口发给bootstrap.jar
- 6.bootstrap.jar接收请求并把命令发给uiautomator
- 7.ui automator执行命令
二、初步认识appium工作过程
- 1.appium有C/S模式
- 2.appium是基于webdriver协议对移动设备自动化api扩展而成的,所有具有和webdriver一样的特性,比如多语言支持。
- 3.webdriver是基于http协议的,第一连接会建立一个session会话,并通过post发送一个json告知服务端相关测试信息。
- 4.对于Android来说,4.2以后是基于UiAutomator框架实现查找注入事件的,4.2以前则是instrumentation框架的,并封装成一个叫Selendroid提供服务。
- 5.客户端只需要发送http请求实现通讯,意味着客户端就是多语言支持的。
- 6.appium服务端是node.js写的,所以安装那个平台都是先安装node,然后npm install -g appium(需要FQ)。
三、bootstrap
1.bootstrap的作用
bootstrap是Appium运行在安卓测试机傻姑娘的一个UIAutomator测试脚本,该脚本的唯一功能就是在目标机器开启一个socket服务器来把一个session中Appium从PC端过来的命令发送给UiAutoamtor来执行处理。
它会监听4724端口获得命令,然后交给UiAutomator来处理。
2.bootstrap
首先,bootstrap是uiautomator的测试脚本,它的入口类bootstrap继承于UiautomatorTestCase,所以Uiautomator可以正常运行它,它也可以正常使用uiautomator的方法,这是就是appium的命令可以转换成uiautomator的关键;
其次,,bootstrap是一个socket服务器,专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理;
最后,bootstrap处理的是从PC端传过来的命令,而非一个文件。
四、所使用的技术
Android上使用了instrumentation和uiautomator两套技术
ios使用uiautomation
同时支持Firefox,并可扩展其他平台。
默认开启4723端口接收webdriver请求可,4723是appium服务,专门和脚本打交道;
默认开启4724,用于和Android设备通讯
新版本的appium Android增加了UIautoamator2的支持,iOS换成了XCUItest
五、capabilities
capabilities是一些键值对的集合。客户端将键值对发送给appium服务端,用来告诉服务端怎样开始测试。
六、工作原理
Appium启动时会创建一个http://127.0.0.1:4723/wd/hub服务端(相当于一个中转站),脚本会告诉服务器我要做什么,服务端再去跟设备打交道。
服务端和设备默认使用4724端口进行通信的,底层调用uiautoamator工具,在测试的时候服务端给设备扔一个bootstrap.jar,会启动这个包,启动之后会在手机上创建一个socket服务,暴露的就是4723端口;相对socket服务来说,appium服务端又是一个客户端;
服务端收到脚本传递过来的命令之后,通过电脑上的4724端口,向设备的4724端口发送指令,bootstrap.jar收到指令后会去完成点击,滑动等操作,完成之后再给服务端一个响应。服务端收到之后再去运行脚本。
appium工作原理的更多相关文章
- [转载]Appium工作原理
[Appium]Appium工作原理 2017-09-13 15:28 sophia194910 阅读(7658) 评论(0) 编辑 收藏 参考:http://www.cnblogs.com/zhjs ...
- Appium 工作原理及 Desired Capabilities
一.Appium工作原理 脚本请求 --> 4723端口appium server --> 解析参数给PC端4724端口 --> 发送给设备4724端口 --> 通过设备472 ...
- 【Appium】Appium工作原理(2)
Appium原理 面试的时候,被问到appium原理,一点不会,实在尴尬. 大家可以直接翻看原作https://blog.csdn.net/jffhy2017/article/details/6922 ...
- 【Appium】Appium工作原理
参考:http://www.cnblogs.com/zhjsll/p/5698878.html 原作者写的很好,所以直接放在这里. 一.什么是Appium Appium是一个开源.跨平台的测试框架,可 ...
- 1.appium工作原理及环境搭建
1.appium: 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. 2.工作原理: 3.搭建appium环境: (1)安装python和nod ...
- 全网最全最细的appium自动化测试环境搭建教程以及appium工作原理
一.前言 对于appium自动化测试环境的搭建我相信90%的自学者都是在痛苦中挣扎,在挣扎中放弃,在放弃后又重新开始,只有10%的人,人品比较好,能够很快并顺利的搭建成功.appium 自动化测试 ...
- Appium学习——Appium工作原理
appium的工具原理 Appium-client>>>>Appium-server>>>>移动设备 ========================= ...
- Appium 工作原理
Appium - automation for mobile apps 一.Appium架构介绍 官网:www.appium.io 由SauceLab公司主持.并在Google的GATC2013会 ...
- 移动端自动化测试之Appium的工作原理学习
Appium 简介 参考官网文档说明:http://appium.io/docs/en/about-appium/intro/ Appium官方文档上介绍,Appium 是一个自动化测试的开源工具,支 ...
随机推荐
- 如何使用JavaScript实现纯前端读取和导出excel文件
js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls.xlsx.ods(一种OpenOffice专 ...
- TestNG 中DataProvider 的用法
使用DataProvider提供数据有两种形式: 第一种:一种是在测试代码和测试数据放在同一个类中: 第二种:把所有的数据提供都单独写在一个类里面,当测试数据比较多时,这种方法利于维护. DataPr ...
- [LeetCode] Swap Adjacent in LR String 交换LR字符串中的相邻项
In a string composed of 'L', 'R', and 'X' characters, like "RXXLRXRXL", a move consists of ...
- snmp简单测试
一.环境搭建 搜索windows Server2003安装配置snmp 服务,按照提示来就行 二.利用 1.找出Coummunity Strings 利用于 auxiliary/scanner/snm ...
- Bear + Reminders 是完美的Thing 3 的替代品
如今同类功能的APP在AppStore上呈现泛滥之势,尤其是时间管理.任务管理之类的APP.其中比较出名的就有“Things 3”这款APP,这是一款多年不更新,一更新就获奖的APP.目前在AppSt ...
- 第一次C语言实验
[实验感受]第一次实验感觉什么都还没有记住就要写小程序了,有些小着急.现在才发现c语言就是要在实践中掌握的,多敲点代码,多犯错误,就会明白其中的规则. 实验一:输入一个数判断奇数还是偶数,现在想想其实 ...
- NOIP2018 游记 QAQ
写在前面: 本人初三党.NOIP前两个月不好好停课搞信竞愣是要搞文化课.于是,期中考与NOIP一起凉凉[微笑] 本人写的第一篇NOIP游记,各位大佬们随便看一看就好 Day -n 初赛71,竟然跟wx ...
- 工程经验记录yolo框下移引发的思考
事件叙述: 缘起:yolo检测框,在项目开始之前由于在一些场景下观察到yolo的框在大车检测的时候,回归的位置不好,一些车辆的尾部会被漏掉,特别是车牌部分,恰好被框在外面的时候,在后续就无法进行车牌检 ...
- python做数据驱动
python代码如下: import unittestfrom openpyxl import load_workbookfrom openpyxl.styles import Fontfrom op ...
- 数据库设计入门及ERMaster的安装和使用
数据库的设计步骤 1.标识表 (根据需求创建表) 2.标识表的字段 3.标识表与表之间的关系 注意事项: 三大范式: 1.确保标识的字段的原子性,字段的概念分的不能再分 2.确保字段与表有依赖的关系 ...