Appium原理精讲
目前使用Appium新版本和旧版本的企业数目都很多,而两个版本的安装过程和api的使用又有较大的区别。但是无论表面上的东东如何变化,内部原理都是一样的。在这里我给大家介绍一下appium的核心,增进大家对它的理解,相信这会对大家后期的使用有很大的帮助。
Appium概念
Appium是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台。Appium
驱动苹果的 UIAutomation 库和 Android 的 UiAutomator 框架,使用 Selenium 的 WebDriver JSON 协议。Appinm 的 iOS 支持是基于 Dan Cuellar's 的 iOS Auto. Appium 同时绑定了Selendroid 用于老的 Android 平台测试(SDK < 16)。
官网:http://appium.io/
Github:https://github.com/appium/appium
特性
1. 跨平台, native/ hybrid/ webview(H5)
2. 跨设备, android/iOS
3. 跨app,可以在多个app之间交互
4. 不依赖APP开源代码
5. 支持Selenium WebDriver / Selenium Grid
6. 跨语言, java/python/ruby
7. Open Source
框架介绍
Appium是由nodejs的express框架写的HttpServer。Appium不是它⾃⼰创建⼀套新的测试框架,是将现有的优秀的框架进行了集成,以Selenium
WebDriver的协议(JsonWireProtocol/Restful web service)统⼀起来.使得这个框架满⾜多⽅⾯的需求。Appium启动自动化测试后,在被测设备上启动⼀个server,监听来⾃ Appium server的指令。不同的平台(如IOS,Android)采⽤不同的运⾏和交换⽅式。Appium将某个桩程序“侵入”平台,用于接受指令,来完成测试脚本的运行。在Android端,appium基于WebDriver,并利用Bootstrap.js,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。另外由于UiAutomator对H5的支持有限,appium引入了chromedriver来实现基于H5的自动化。
原理图(Android)
分析:
1.左边的Code(WebDriver script)是我们的appium测试脚本。
2.中间是开起的Appium的服务(不同的系统需要安装与之对应的Appium server,这也就是appium可以同时支持android、ios以及windows应用进行自动化测试的原因。在这里以android为例进行说明)Appium在这边起了一个Server(4723端口),跟selenium Webdriver测试框架类似,Appium支持标准的WebDriver JSONWireProtocol。在这里提供了一套web服务,Appium Server接收webdriver标准请求,解析请求内容,调⽤用对应的框架响应操作。如:脚本发送一个点击按钮的请求给appium server。
3. appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上。Bootstrap接收 appium 的命令(4724端口),最终通过调⽤用UiAutomator的命令来实现。
4.最后执⾏ 的结果由Bootstrap返回给appium server。
5.另外,appium还用到了chromedriver来支持基于H5(webview)的测试。
Appium原理精讲相关推荐
- 自动配置原理精讲||@Conditional ||怎么知道哪些自动配置类生效? 启用debug=true属性(在配置文件配置);
自动配置原理精讲 派生注解 配置文件怎么配置 server.port spring.config.location="D://application.properties" htt ...
- 深入Java核心 Java内存分配原理精讲
深入Java核心 Java内存分配原理精讲 Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详 ...
- 视频教程-区块链技术原理精讲-区块链
区块链技术原理精讲 5年JAVA/Go研发工程师经验.目前作为公司技术负责人从事区块链架构设计.研发工作. 熟悉分布式系统/区块链.云计算/虚拟化技术.敏捷开发等领域技术,开源软件爱好者. 荆帅帅 ¥ ...
- ShardingSphere分库分表核心原理精讲第十一节 分布式事务详解
27 分布式事务:如何理解 ShardingSphere 中对分布式事务的抽象过程? 从今天开始,我们将进入一个全新模块,即ShardingSphere 分布式事务.这是一个非常重要的主题,我们将通过 ...
- Selenium原理精讲
Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试(目前支持的语言有Java,Python,Ruby ...
- JavaScript核心原理精讲第三章 数组原理和排序
07-数组原理(上):帮你梳理眼花缭乱的数组 API 我在上一讲为你剖析了闭包这个难点,带你了解了作用域.闭包产生的原因及表现形式.那么这一讲,我们一起来手工实现一个 JSON.stringify 的 ...
- pca主成分分析结果解释_主成分分析(PCA)原理精讲 | 统计学专题
引言:当数据维度较高时,我们很难通过普通的方法做图,更不能分析样本间的关系.故我们接下来学习降维度.可视化的主成分分析(Principal Component Analysis,PCA). 1.何时使 ...
- LUT查找表实现多路复选器原理精讲
(1)多路复选器的概念 多路复用器即数据选择器,用来将N个输入通道的数据复用到一个输出通道上,多路复用器在数字系统中有着非常重要的应用.4选1多路复用器的实现结构如图所示: 图中有四路数据 C0到C3 ...
- ShardingSphere分库分表核心原理精讲第十二节 数据安全和脱敏详解
本资源由 itjc8.com 收集整理 今天,我们讨论 ShardingSphere 中的数据脱敏模块.通过在 "10 | 数据脱敏:如何确保敏感数据的安全访问?" 课时中的介绍, ...
- 2 Java并发原理精讲课程学习笔记
1.1.初始线程8大核心基础 实现多线程的方法到底有1种还是2种还是4种? 怎样才是正确的线程启动方式? 如何正确停止线程? 线程的一生--6个状态(生命周期) Thread和Object类中的重要方 ...
最新文章
- linux下pptpd的安装配置(×××)
- RocketMQ-初体验RocketMQ(11)-过滤消息_自定义Java类筛选消息
- 【Mac】安装 tesserocr 遇到的一些坑(‘cinttypes' file not found)
- Spring注解开发-初始化/销毁方法注解
- kali 安装volatility_虚拟机安装|给你双倍快乐
- 回腾讯了......
- R语言观察日志(part22)--glmnet包
- CVPR2020最新实例分割论文
- 人脸验证(五)--NormFace
- JS-两个空数组为什么不相等?
- 数学建模系列-优化模型---(一)规划模型
- 计算机win7系统还原,win7还原系统——win7系统还原出厂设置
- mysql中date类型_MySql的日期类型datetime和timestamp
- 办信用卡哪家强?update 2014.11.21
- 解决PHP报错No input file specified
- 在linux下刷B站方法总结
- win7和win10 5次shift漏洞破解开机密码
- win7系统做网站服务器,win7系统做网站服务器
- 「区块链+数字身份」:DID 身份认证的新战场
- git fetch学习之旅