引言:Appium 是一个移动端自动化测试开源工具,可以针对不同的平台用一套API来编写测试用例。本文对Appium自动化测试框架的功能进行了概括。 本文选自《软件自动化测试开发》。

Appium 框架的功能

(1)支持iOS、Android,可在多台机器上并行App 自动化,测试机型适配。 
(2)代码实现关键字驱动:

  • 测试集:关联Excel 测试用例和脚本配置。
  • 测试数据:Excel 存储输入数据、控件元素、测试结果。
  • 测试脚本:由Java 和TestNG 编写,分层结构有case、log、config、report 以及data 等。

(3)自动测试用例执行:

  • 从功能测试用例中抽取需重复执行的、主要的功能进行用例覆盖。
  • 支持用例failed(失败)时自动截屏。
  • failed(失败)用例自动重复执行数遍。

(4)持续集成环境Jenkins,定时自动构建和执行测试任务。

  • 测试结果报告展示,自动邮件展示。

Appium 自动化测试一个App 的基本过程如下:

测试App 的基本过程

  基于Appium 自动化测试框架,我们要进行的是连接电脑、连接手机、解锁、安装App、卸载App、启动App、元素定位、元素的操作、屏幕的操作、页面等待、异常处理截图、数据校验、日志、报告等一系列自动化测试执行的详细过程。 
Appium 自动化框架元素控件的捕获,根据捕获到的元素控件进行相应的操作。 
  Appium 元素控件有多种定位方法,最常用的是元素的ID(即By.id)和元素的值(即By.name)。还可以通过元素类型TagName、元素的位置XPath、手机设备的坐标等进行定位操作。安卓的元素控件可以通过SDK 中的uiautomatorviewer.bat 文件进行录制和捕获定位,如下图所示。 



  上图中,Node Detail 下面的resource-id com.test.seller:id/phone_edit1 对应Excel 和代码中的定位方法By.id,控件元素数据text 13798359580 对应Excel 和代码中的操作方法sendkeys(),控件元素赋值数据为13798359580。 
  可以这样理解:首先找到这个文本框,接着给这个文本框输入数据。即通过ID属性值com.test.seller:id/phone_edit1,找到此用户名文本框的控件元素,然后通过sendkeys()方法输入用户名数据13798359580 到此用户名文本。其他自动化测试步骤的定位方法、控件元素以及操作方法也都与此类似。实际上,自动化测试就是通过程序代码来实现模拟手动测试去操作一遍的过程。 
  上面介绍了用户名文本框输入用sendkeys()方法,那么其他元素的操作方法有哪些呢?元素操作方法大致有单击(click)、输入(sendkeys)、元素滑动 、页面滑动、长按、下拉、弹出、屏幕放大缩小等,最常用的就是单击和输入。 
  数据校验。其实元素本身就是数据校验,当程序找不到元素时,用例就会失败。 
  另外,测试用例时可以加入一个或多个断言进行验证数据,还可设置步骤等待延迟时间。 
  测试结果。测试用例中记录了运行后的测试结果,如pass、failed 或是skip。(此部分会在《软件自动化测试开发》第4章中进行详细讲解)

Appium 介绍(参考Appium 官方资料)

  Appium 是一个移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台。 
  Appium 是跨平台的,即可以针对不同的平台用一套API 来编写测试用例。 
  Appium 是一个C/S 架构,核心是一个 Web 服务器,它提供了一套 REST 的接口。当收到客户端的连接后,就会监听到命令,然后在移动设备上执行这些命令,最后将执行结果放在 HTTP 响应中返还给客户端。

Session

  自动化始终围绕一个Session(会话)进行。客户端初始化一个Session 来与服务端交互,不同的语言有不同的实现方式,但是它们最终都是发送一个POST 请求给服务端,请求中包含一个JSON 对象,其被称作“Desired Capabilities”。此时,服务端就会开启一个自动化的 Session,然后返回一个Session ID,Session ID 将会被用户发送后续的命令。

Desired Capabilities

  Desired Capabilities 是一些键值对的集合(比如一个 map 或者 hash)。客户端将这些键值对发送给服务端,告诉服务端我们想要怎样测试。比如,我们可以把platformName capability 设置为 iOS,告诉Appium 服务端,我们想要一个iOS 的session,而不是一个 Android 的session。

Appium Server 服务端

  Appium Server 是用 Node.js 写的,我们既可以用源码编译,也可以从 NPM 直接安装。 
  Appium 服务端有很多语言库,如 Java、Ruby、Python、PHP、JavaScript 以及C#等,这些库都实现了 Appium 对 WebDriver 协议的扩展。当使用 Appium 的时候,你只需使用这些库代替常规的 WebDriver 库就可以了。

Appium Clients 客户端

  此客户端的概念不是我们传统意义上的客户端,更好的理解方式是一个扩展的WebDriver 协议库,当你用自己喜欢的语言写case 时,会将该语言扩展的WebDrvier库添加到自己的环境中,这时你可以把它理解为这就是个客户端。 
  Appium Clients 客户端的安装包如下。 
  Mac 机器上直接运行Appium.dmg;Windows 机器上运行Appium.exe。

Appium Android/iOS 工作原理

  API 接口调用Selenium 的接口,Appium Server 接收WebDriver 标准请求,解析请求内容,调用对应的框架响应操作。代码将DesiredCapability 中的键值对组合成一个JSON,然后通过HTTP 协议发送到Appium服务器创建一个session。代码与Appium的所有交互都是围绕着这个session 进行的。session 创建成功后,Appium 再通过USB接口与手机之间创建TCP 连接,先安装一些服务端App,比如Android API 4.2+是uiautomator,Android 2.3+是Instrumentation;如果是iOS,则是UiAutomation。手机的操作都是由Appium 发送指令到uiautomator,然后再由uiautomator 进行控制的。 
  Appium 原理图如下。 

  Appium 的核心是一个遵守REST 设计风格的Web 服务器,它接收客户端的连接和命令,在手机设备上执行命令,然后通过HTTP 的响应收集命令执行的结果。这种架构给我们提供了很好的开放特性:只要某种语言有HTTP 客户端的API,我们就可以通过这个语言写自己的测试代码。 
  本文选自《软件自动化测试开发》,点此链接可在博文视点官网查看。 
  

转载于:https://www.cnblogs.com/broadview/p/6253195.html

Appium移动自动化框架相关推荐

  1. android ui自动化框架选型,Appium UI 自动化框架之我见 (开源)

    APP UI Automation Framework 一个基于 Appium 1.8.1.TestNG,Page Object 模式开发的 UI 自动化测试框架 介绍文档 结构图 基本功能 每秒生成 ...

  2. appium+python自动化项目实战(一):引入nose和allure框架

    本文将介绍一套比较完整的appium自动化框架,以python为编写脚本语言,是因为python有强大的库,同时易学易懂. 最终的测试框架代码,将在jenkins项目中一键构建,执行自动化测试用例,并 ...

  3. Appium自动化框架简介

    Appium Appium简介 Appium结构流程 Appium工作原理 Appium架构分析 Appium简介 Appium遵循的原则: 1.使用自动化来测试一个app,但是不需要重新编译它 2. ...

  4. Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)...

    简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...

  5. pythonappium自动化框架_Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)...

    简介 前边一直在分享testng的相关文章,看了点赞量和阅读数不是很高,宏哥猜测估计是大家确实是用不到或者不喜欢吧!不过宏哥经过一段时间的准备,appium的自动化测试框架完善的差不多了,那么接下来宏 ...

  6. 4行代码,让app自动化框架支持 webview 混合应用操作

    移动端 app 自动化框架很多,但是有一些框架因为不支持混合应用测试,一直没有完全流行.比较典型的是经典的 Python 框架 uiautomator2, 这个框架简单好用,没有 appium 那样复 ...

  7. Appium移动自动化框架原理

    一.基本介绍 1.Appium介绍 appium是一个移动端自动化测试开源工具,支持Android和iOS平台,支持python.Java等语言,即同一套java或python脚本可以同时运行在iOS ...

  8. Appium+python自动化8-Appium Python API

    Appium+python自动化8-Appium Python API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contex ...

  9. 2020年你不可不知的自动化框架,可替代Selenuim的测试框架Top10

    Selenium是一种开源自动测试工具.它可以跨不同的浏览器和平台在Web应用程序上执行功能,回归,负载测试.Slenium是最好的工具之一,但确实有一些缺点. 业界有一些强大的工具可以替代Selen ...

最新文章

  1. 2020 年,人工智能和深度学习未来的五大趋势
  2. 关系型数据库到HBase的数据储存方式变迁
  3. 使用python3 解析html对称标签
  4. java获取数组最大最小值
  5. 高达100亿美元!美国国防部将IBM和甲骨文双双踢出了云计算合同;华为任正非说了,华为对向苹果等对手出售5G芯片保持开放的态度...
  6. 开心猫序列C语言,开心猫的读后感作文
  7. Python3.x:pip install pymssql安装时出错
  8. 网络传输中利用fastjson将复杂嵌套数据类型Json格式转换(GeoJsonPolygon)
  9. qregularexpression和qregexp的区别
  10. 2022级sdut知到/智慧树---c语言第一章测试题解
  11. 爱了爱了!阿米洛熊猫机械键盘cherry樱桃粉轴白灯,写代码神器!免费包邮送到家!...
  12. 弘辽科技:淘宝旧链接如何打新品标?有什么规则?
  13. 适合arduino小白入门的最基础的函数教程
  14. Java—计算球体积
  15. bootstrap框架 基础样式
  16. 透析BAT人工智能生态图谱:AI大战一触即发
  17. git不显示贡献度的解决方案
  18. 【Android App】人脸识别中扫描识别二维码实战解析(附源码和演示 超详细)
  19. 以色列《耶路撒冷之鸽》凄美感人别具特色
  20. D. Unusual Sequences

热门文章

  1. 2020年PHP中级面试知识点及答案
  2. 大牛整理:java去掉字符串中的逗号
  3. Latex字体加粗命令备忘
  4. python【力扣LeetCode算法题库】914. 卡牌分组(reduce collections.Counter)
  5. python标准化输出_Python设定模板及标准化输出,输入
  6. java cpu过高排查_CPU使用率过高,访问页面的速度越来越慢?今天我教你解决
  7. 网络推广专员教大家网站SEO优化中锚文本的使用技巧
  8. 网站推广中的优化雷区作为网站推广专员你了解多少?
  9. 作为SEO老人不轻易建议客户进行动态网页优化设置
  10. linux中js文件有乱码,解决node.js读取文件时中文乱码问题