目前使用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原理精讲相关推荐

  1. 自动配置原理精讲||@Conditional ||怎么知道哪些自动配置类生效? 启用debug=true属性(在配置文件配置);

    自动配置原理精讲 派生注解 配置文件怎么配置 server.port spring.config.location="D://application.properties" htt ...

  2. 深入Java核心 Java内存分配原理精讲

    深入Java核心 Java内存分配原理精讲 Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详 ...

  3. 视频教程-区块链技术原理精讲-区块链

    区块链技术原理精讲 5年JAVA/Go研发工程师经验.目前作为公司技术负责人从事区块链架构设计.研发工作. 熟悉分布式系统/区块链.云计算/虚拟化技术.敏捷开发等领域技术,开源软件爱好者. 荆帅帅 ¥ ...

  4. ShardingSphere分库分表核心原理精讲第十一节 分布式事务详解

    27 分布式事务:如何理解 ShardingSphere 中对分布式事务的抽象过程? 从今天开始,我们将进入一个全新模块,即ShardingSphere 分布式事务.这是一个非常重要的主题,我们将通过 ...

  5. Selenium原理精讲

    Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试(目前支持的语言有Java,Python,Ruby ...

  6. JavaScript核心原理精讲第三章 数组原理和排序

    07-数组原理(上):帮你梳理眼花缭乱的数组 API 我在上一讲为你剖析了闭包这个难点,带你了解了作用域.闭包产生的原因及表现形式.那么这一讲,我们一起来手工实现一个 JSON.stringify 的 ...

  7. pca主成分分析结果解释_主成分分析(PCA)原理精讲 | 统计学专题

    引言:当数据维度较高时,我们很难通过普通的方法做图,更不能分析样本间的关系.故我们接下来学习降维度.可视化的主成分分析(Principal Component Analysis,PCA). 1.何时使 ...

  8. LUT查找表实现多路复选器原理精讲

    (1)多路复选器的概念 多路复用器即数据选择器,用来将N个输入通道的数据复用到一个输出通道上,多路复用器在数字系统中有着非常重要的应用.4选1多路复用器的实现结构如图所示: 图中有四路数据 C0到C3 ...

  9. ShardingSphere分库分表核心原理精讲第十二节 数据安全和脱敏详解

    本资源由 itjc8.com 收集整理 今天,我们讨论 ShardingSphere 中的数据脱敏模块.通过在 "10 | 数据脱敏:如何确保敏感数据的安全访问?" 课时中的介绍, ...

  10. 2 Java并发原理精讲课程学习笔记

    1.1.初始线程8大核心基础 实现多线程的方法到底有1种还是2种还是4种? 怎样才是正确的线程启动方式? 如何正确停止线程? 线程的一生--6个状态(生命周期) Thread和Object类中的重要方 ...

最新文章

  1. linux下pptpd的安装配置(×××)
  2. RocketMQ-初体验RocketMQ(11)-过滤消息_自定义Java类筛选消息
  3. 【Mac】安装 tesserocr 遇到的一些坑(‘cinttypes' file not found)
  4. Spring注解开发-初始化/销毁方法注解
  5. kali 安装volatility_虚拟机安装|给你双倍快乐
  6. 回腾讯了......
  7. R语言观察日志(part22)--glmnet包
  8. CVPR2020最新实例分割论文
  9. 人脸验证(五)--NormFace
  10. JS-两个空数组为什么不相等?
  11. 数学建模系列-优化模型---(一)规划模型
  12. 计算机win7系统还原,win7还原系统——win7系统还原出厂设置
  13. mysql中date类型_MySql的日期类型datetime和timestamp
  14. 办信用卡哪家强?update 2014.11.21
  15. 解决PHP报错No input file specified
  16. 在linux下刷B站方法总结
  17. win7和win10 5次shift漏洞破解开机密码
  18. win7系统做网站服务器,win7系统做网站服务器
  19. 「区块链+数字身份」:DID 身份认证的新战场
  20. git fetch学习之旅

热门文章

  1. 九大Java性能优化工具
  2. 1301_两种方式为开发板增加串口监控功能
  3. grads插值_grads各类参数设置.pptx
  4. 《React小书》终结笔记
  5. java搭建rtmp服务器,利用docker搭建RTMP直播流服务器实现直播
  6. GD32单片机介绍——兆易创新
  7. 南方cass字体样式设置_cass怎么修改字体 cass字体样式管理器
  8. linux中高危端口,关闭高危端口方法[转载]
  9. JS前端生成二维码的几种方式
  10. HCNA华为认证网络工程师视频教程