【移动应用开发技术】Appium移动自动化框架_第1页
【移动应用开发技术】Appium移动自动化框架_第2页
【移动应用开发技术】Appium移动自动化框架_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Appium移动自动化框架

引言:Appium是一个移动端自动化测试开源工具,可以针对不同的平台用一套API来编写测试用例。本文对Appium自动化测试框架的功能进行了概括。本文选自《软件自动化测试开发》。引言:Appium是一个移动端自动化测试开源工具,可以针对不同的平台用一套API来编写测试用例。本文对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)和元素的值(即B)。还可以通过元素类型TagName、元素的位置XPath、手机设备的坐标等进行定位操作。安卓的元素控件可以通过SDK中的uiautomatorviewer.bat文件进行录制和捕获定位,如下图所示。

上图中,NodeDetail下面的resource-idcom.test.seller:id/phone_edit1对应Excel和代码中的定位方法By.id,控件元素数据tex应Excel和代码中的操作方法sendkeys(),控件元素赋值数据

可以这样理解:首先找到这个文本框,接着给这个文本框输入数据。即通过ID属性值com.test.seller:id/phone_edit1,找到此用户名文本框的控件元素,然后通过sendkeys()方法输入用户名数此用户名文本。其他自动化测试步骤的定位方法、控件元素以及操作方法也都与此类似。实际上,自动化测试就是通过程序代码来实现模拟手动测试去操作一遍的过程。

上面介绍了用户名文本框输入用sendkeys()方法,那么其他元素的操作方法有哪些呢?元素操作方法大致有单击(click)、输入(sendkeys)、元素滑动、页面滑动、长按、下拉、弹出、屏幕放大缩小等,最常用的就是单击和输入。

数据校验。其实元素本身就是数据校验,当程序找不到元素时,用例就会失败。

另外,测试用例时可以加入一个或多个断言进行验证数据,还可设置步骤等待延迟时间。

测试结果。测试用例中记录了运行后的测试结果,如pass、failed或是skip。(此部分会在《软件自动化测试开发》第4章中进行详细讲解)/20170105154316311?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast/20170105154323936?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast/20170105154330952?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEastAppium是一个移动端自动化测试开源工具,支持iOS和Android平台,支持Python、Java等语言,即同一套Java或Python脚本可以同时运行在iOS和Android平台。

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

Appium是一个C/S架构,核心是一个Web服务器,它提供了一套REST的接口。当收到客户端的连接后,就会监听到命令,然后在移动设备上执行这些命令,最后将执行结果放在HTTP响应中返还给客户端。Session自动化始终围绕一个Session(会话)进行。客户端初始化一个Session来与服务端交互,不同的语言有不同的实现方式,但是它们最终都是发送一个POST请求给服务端,请求中包含一个JSON对象,其被称作“DesiredCapabilities”。此时,服务端就会开启一个自动化的Session,然后返回一个SessionID,SessionID将会被用户发送后续的命令。DesiredCapabilitiesDesiredCapabilities是一些键值对的集合(比如一个map或者hash)。客户端将这些键值对发送给服务端,告诉服务端我们想要怎样测试。比如,我们可以把platformNamecapability设置为iOS,告诉Appium服务端,我们想要一个iOS的session,而不是一个Android的session。AppiumServer服务端AppiumServer是用Node.js写的,我们既可以用源码编译,也可以从NPM直接安装。

Appium服务端有很多语言库,如Java、Ruby、Python、PHP、JavaScript以及C#等,这些库都实现了Appium对WebDriver协议的扩展。当使用Appium的时候,你只需使用这些库代替常规的WebDriver库就可以了。AppiumClients客户端此客户端的概念不是我们传统意义上的客户端,更好的理解方式是一个扩展的WebDriver协议库,当你用自己喜欢的语言写case时,会将该语言扩展的WebDrvier库添加到自己的环境中,这时你可以把它理解为这就是个客户端。

AppiumClients客户端的安装包如下。

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

Appium原理图如下。

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

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

/20170105154346427?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQk

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论