前言


  同样的,这一篇我要介绍的也是一款UI自动化工具,地址:http://appium.io/

  第三方(非谷歌)研发的开源测试工具,说到这里也许有人会问 “为什么已经介绍了Uiautomator还要介绍它呢?”,我们就说说Appium有哪些不一样的地方:

    1、appium可以测试原生的、混合的、或者是移动端的web项目;

    2、appium不仅支持测试Android应用,还可以测试ios;

    3、appium跨平台,可以运行在Windows或者Linux上;

    4、appium支持多种语言,你可以用你自己熟悉的语言,如java、ruby、python等来完成你的脚本。

  它的底层架构是:

  网上找了两段解释,说的应该比较清楚:

    一、Appium采用底层驱动商提供统一API,就是WebDriver API。

    WebDriver(也称Selenium WebDriver)其实是一个C/S架构的协议,叫做JSON Wire Protocol。通过这个协议,用任何语言写成的客户端都可以发送HTTP请求给服务器。这就意味着你可以自由选择你想要使用的测试框架和执行器,也可以将任何包含HTTP客户端的库文件加入到你的代码中。换句话说,Appium的WebDriver不是一个技术上的测试框架,而是一个自动化库。

    二、在Android端,WebDriver利用Bootstrap.js,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。UiAutomator测试框架是Android SDK⾃自带的App UI自动化测试Java库。另外由于UiAutomator对H5的⽀支持有限,appium引入了chromedriver来实现基于H5的自动化。

  
    1.左边的WebDriver script是我们的selenium测试脚本
    2.中间是起的Appium的服务,Appium在这边起了一个Server(4723端口),跟seleniumWebdriver测试框架类似,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)的测试。

  了解完基本的一些之后,就可以环境搭建了。

转载于:https://www.cnblogs.com/ht22ht22/p/8870160.html

【Android测试】【第十四节】Appium——简述相关推荐

  1. Python编程基础:第五十四节 排序Sort

    第五十四节 排序Sort 前言 实践 前言 我们常需要对列表.元组中的元素进行排序,例如按照字母表排列学生的名称.这里就需要用到列表的sort()方法,以及sorted()函数. 实践 我们先来构建一 ...

  2. Python编程基础:第四十四节 方法重写Method Overriding

    第四十四节 方法重写Method Overriding 前言 实践 前言 我们前面说了,子类继承于父类,可以调用父类的所有属性和方法.那么如果我们想在继承的过程中重新书写父类的某些方法,此时就用到了方 ...

  3. Python编程基础:第三十四节 文件移动Move a File

    第三十四节 文件移动Move a File 前言 实践 前言 当我们需要将一个文件/文件夹移动到另一个指定路径时,就需要用到shutil.move()函数,该函数需要指定两个参数shutil.move ...

  4. Python编程基础:第二十四节 作用域Scope

    第二十四节 作用域Scope 前言 实践 前言 在Python中每一个变量都有其自己的生命周期,我们一般将变量分为全局变量与局部变量,全局变量是指在整个代码内部都可以访问到的变量,局部变量是指只有在函 ...

  5. Python编程基础:第十四节 列表Lists

    第十四节 列表Lists 前言 实践 前言 列表是一种非常常用的数据结构.我们可以用它来存储各种类型的数据. 实践 我们先来创建一个名为food的列表,里面存储了一系列我喜欢的食物名称: food = ...

  6. matlab练习_MATLAB教程-台大郭彦甫-第十四节,含练习答案

    14-回归与内插 一.Polynomial curve fitting(多项式曲线拟合) (一)Simple Linear Regression(简单线性回归) 1.A bunch of data p ...

  7. 大白话5分钟带你走进人工智能-第二十四节决策树系列之分裂流程和Gini系数评估(3)...

     第二十四节决策树系列之分裂流程和Gini系数评估(3) 上一节中我们讲解了决策树的数学表达形式,本节的话我们讲解决策树的分裂流程以及分裂条件的评估.我们基于决策树的递归表达式上:           ...

  8. 第十四节 OSAL工作原理

    第十四节  OSAL工作原理     蓝牙为了实现同多个设备相连,或实现多功能,也实现了功能扩充,这就产生了调度问题.因为,虽然软件和协议栈可扩充,但终究最底层的执行部门只有一个.为了实现多事件和多任 ...

  9. 大白话5分钟带你走进人工智能-第十四节过拟合解决手段L1和L2正则

                                                                     第十四节过拟合解决手段L1和L2正则 第十三节中,我们讲解了过拟合的情 ...

  10. 风炫安全WEB安全学习第四十四节课 敏感信息泄漏

    第四十四节课 敏感信息泄漏 敏感信息泄漏 0x01 漏洞简介 敏感数据包括但不限于:口令.密钥.证书.会话标识.License.隐私数据(如短消息的内容).授权凭据.个人数据(如姓名.住址.电话等)等 ...

最新文章

  1. Git的使用-将本地项目上传至Github/Github下载代码至本地-MAC
  2. vb6 判断打印机是否有效_智能收银机的热敏打印机打不出字怎么办?
  3. python3.6.0安装步骤
  4. mysql数据库中数据类型的长度
  5. CNN和FCN的区别
  6. Linux打开文件操作的注意事项
  7. 【硬件】推荐软件『软硬件的基准测试工具』
  8. 设计模式(8)装饰模式
  9. 计算机的硬盘材料,电脑坏了把硬盘资料转移到新硬盘的方法
  10. python ddos_python 检查是否存在ddos攻击
  11. python编写财务软件_python 与财务
  12. Spring Security:自动登录(降低安全风险)
  13. idea破解失败无法打开
  14. Linux 中的压缩命令
  15. linux nfs性能差,linux – 奇怪的nfs性能:1个线程比8个好,8个好于2个!
  16. 国内App推广终极37个方法
  17. LeetCode 216组合总和III 17电话号码的字母组合
  18. 苹果或挖走Meta AR公关总监,2022年的头显是真的要来了?
  19. 计算机双语论文,计算机双语教学初探论文
  20. 软件测试具有哪些优势

热门文章

  1. 跑yolo3模型出的效果图_效果图和效果图设计到底有什么区别?区别大着呢,亲……...
  2. ae中合成设置的快捷键_AE项目工作流程讲解及项目与合成设置
  3. php in循环与for循环,详谈js中标准for循环与foreach(for in)的区别
  4. linux开终端失败,Linux:终端提示符 (prompt) 不如期生效原因
  5. php根据不同的条件替换一段html代码中的不同的img标签
  6. 一种安全的static变量Get/Set方式
  7. 【AWT编写图形用户界面】GUI编程之AWT讲解(看不懂你来打我)
  8. FCN-TensorFlow完整代码Github
  9. 快速排序python实现
  10. java封装,继承和多态