Appium移动自动化框架

  • 时间:
  • 浏览:2

Appium 的核心是有两个 多遵守REST 设计风格的Web 服务器,它接收客户端的连接和命令,在手机设备上执行命令,如果通过HTTP 的响应分类分类整理命令执行的结果。你这俩架构给朋友儿提供了很好的开放特征:假如本身语言有HTTP 客户端的API,朋友儿就还并能 通过你这俩语言写个人的测试代码。

[选自《软件自动化测试开发》,点此链接可在博文视点官网查看。

](http://www.broadview.com.cn/book/98?spm=5176.400239.blogcont68377.8.3af1054a4xMPTw)

上图中,Node Detail 下面的resource-id com.test.seller:id/phone_edit1 对应Excel 和代码中的定位土措施By.id,控件元素数据text 137983595400 对应Excel 和代码中的操作土措施sendkeys(),控件元素赋值数据为137983595400。

还并能 原先理解:首先找到你这俩文本框,接着给你这俩文本框输入数据。即通过ID属性值com.test.seller:id/phone_edit1,找到此用户名文本框的控件元素,如果通过sendkeys()土措施输入用户名数据137983595400 到此用户名文本。许多自动化测试步骤的定位土措施、控件元素以及操作土措施也都与此累似 。实际上,自动化测试所以通过应用程序池池代码来实现模拟手动测试去操作一遍的过程。

上边介绍了用户名文本框输入用sendkeys()土措施,这麼许多元素的操作土措施有什么呢?元素操作土措施大致有单击(click)、输入(sendkeys)、元素滑动 、页面滑动、长按、下拉、弹出、屏幕放大缩小等,最常用的所以单击和输入。

数据校验。实在元素本身所以数据校验,当应用程序池池找不都并能元素时,用例就会失败。

另外,测试用例时还并能 加入有两个 多或多个断言进行验证数据,还可设置步骤听候延迟时间。

测试结果。测试用例中记录了运行后的测试结果,如pass、failed 或是skip。(此次责会在《软件自动化测试开发》第4章中进行完全讲解)

Session

  自动化始终围绕有两个 多Session(会话)进行。客户端初始化有两个 多Session 来与服务端交互,不同的语言有不同的实现土措施,如果它们最终前会 发送有两个 多POST 请求给服务端,请求蕴含有有两个 多JSON 对象,其被称作“Desired Capabilities”。此时,服务端就会开启有两个 多自动化的 Session,如果返回有两个 多Session ID,Session ID 因为被用户发送后续的命令。

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

  Appium 是有两个 多移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本还并能 并肩运行在iOS 和Android平台。

Appium 是跨平台的,即还并能 针对不同的平台用一套API 来编写测试用例。

Appium 是有两个 多C/S 架构,核心是有两个 多 Web 服务器,它提供了一套 REST 的接口。当收到客户端的连接后,就会监听到命令,如果在移动设备上执行什么命令,最后将执行结果倒进 HTTP 响应中返还给客户端。

(1)支持iOS、Android,可在多台机器上并行App 自动化,测试机型适配。

(2)代码实现关键字驱动:

Appium Clients 客户端

  此客户端的概念前会 朋友儿传统意义上的客户端,更好的理解土措施是有两个 多扩展的WebDriver 协议库,当你用个人喜欢的语言写case 时,会将该语言扩展的WebDrvier库添加到个人的环境中,这时让你把它理解为这所以个客户端。

Appium Clients 客户端的安装包如下

Mac 机器上直接运行Appium.dmg;Windows 机器上运行Appium.exe。

测试App 的基本过程

  基于Appium 自动化测试框架,朋友儿要进行的是连接电脑、连接手机、解锁、安装App、卸载App、启动App、元素定位、元素的操作、屏幕的操作、页面听候、异常避免截图、数据校验、日志、报告等一系列自动化测试执行的完全过程。

Appium 自动化框架元素控件的捕获,根据捕获到的元素控件进行相应的操作。

Appium 元素控件有多种定位土措施,最常用的是元素的ID(即By.id)和元素的值(即By.name)。还还并能 通过元素类型TagName、元素的位置XPath、手机设备的坐标等进行定位操作。安卓的元素控件还并能 通过SDK 中的uiautomatorviewer.bat 文件进行录制和捕获定位,如下图所示。

Appium Server 服务端

  Appium Server 是用 Node.js 写的,朋友儿既还并能 用源码编译,也还并能 从 NPM 直接安装。

Appium 服务端有所以语言库,如 Java、Ruby、Python、PHP、JavaScript 以及C#等,什么库都实现了 Appium 对 WebDriver 协议的扩展。当使用 Appium 的事先,你只需使用什么库代替常规的 WebDriver 库就还并能 了。

从功能测试用例中抽取需重复执行的、主要的功能进行用例覆盖。

支持用例failed(失败)时自动截屏。

failed(失败)用例自动重复执行数遍。

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

Appium 框架的功能

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

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

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 原理图如下。

Desired Capabilities

  Desired Capabilities 是许多键值对的集合(比如有两个 多 map 因为 hash)。客户端将什么键值对发送给服务端,告诉服务端朋友儿让你何如测试。比如,朋友儿还并能 把platformName capability 设置为 iOS,告诉Appium 服务端,朋友儿让你有两个 多iOS 的session,而前会 有两个 多 Android 的session。

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

测试集:关联Excel 测试用例和脚本配置。

测试数据:Excel 存储输入数据、控件元素、测试结果。

测试脚本:由Java 和TestNG 编写,分层特征有case、log、config、report 以及data 等。

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