引言
在目前效率为王的互联网时代,移动应用自动化测试逐渐替代原始的手工功能测试,越来越成为测试界的时尚宠儿,小编在这里也为大家介绍下现有的客户端自动化测试框架:Appium、Airtest,并简单比较下两者的区别,同时重点介绍Appium自动化测试框架,大家跟随小编的脚步一起来探索客户端自动化测试框架吧~
一、Appium简介
1. 含义
Appium是一个主流且开源的移动应用自动化测试框架,支持iOS和Android平台上的移动原生应用、移动Web应用和混合应用的自动化测试。
移动原生应用指的是用iOS或者Android SDK写的应用,对于Android用户是apk格式文件,对于iOS来说是ipa格式文件;
移动Web应用指的是移动端的Web浏览器,它其实和PC端的Web浏览器基本没有区别,只不过移动端的Web浏览器所依附的操作系统不再是Windows或Linux,而是iOS和Android;
混合应用指的是介于Web应用和原生应用两者之间的一种应用形式,混合应用利用Web应用和原生应用的优点,通过原生容器展示H5页面,即在原生应用中嵌入Webview,通过Webview访问该页面。
2. 测试App运行平台
Appium是一个跨平台的工具,它允许测试人员使用同样的接口、基于不同的平台(iOS、Android)写自动化测试脚本,这样大大增加了iOS和Android测试套件间的代码复用性,Appium测试App运行平台可支持:iOS、Android、Windows、Mac OS。
二、Appium与Airtest自动化框架讨论
1. Airtest简介
目前移动应用自动化测试框架比较主流的是Appium和Airtest,Airtest是网易出品的一款基于图像识别和poco控件识别的UI自动化测试工具。支持Windows、Android、iOS平台,原理类似于Appium,通过控件的名称、id来定位目标控件,然后调用函数方法,例如click()之类的方法来实现目标控件的点击操作。
2. Appium和Airtest对比
Appium和Airtest均可作为客户端自动化测试工具,那他们各自有哪些优缺点呢?小编在这里针对以下几个方面做了总结:
上述比较仅作为参考,具体还要结合项目产品形态,选择最适合项目的自动化测试框架。依据所在项目组的产品形态,小编选择的自动化测试框架是Appium~接下来将重点介绍Appium元素定位方法及在项目中的应用。
三、Appium元素定位的3大利器
1. 应用UIAutomator Viewer获取元素信息
UIAutomator Viewer是Android SDK自带的用来扫描和分析Android应用中UI控件的工具。在这里小编举一个实例,结合设备中的计算器应用和UIAutomator Viewer工具向大家演示。
首先启动Android设备中的计算器应用,再启动UIAutomator Viewer(这一步依赖于PC端安装Android SDK),其位置在Android-sdkandroid-sdk-windowstools,对应的启动文件为uiautomatorviewer.bat,启动后展示的UI界面如下图所示:
点击红框中标出的图标,等待其展示启动的计算器应用界面:
这里,小编先给大家讲解如何通过id来获取计算器应用的“2”按键,UIAutomator Viewer界面中点击“2”,在右侧下方Node Detail中可以看到该按键的“resource-id” ,对应的代码实现为:
代码语言:javascript复制button1 = driver.find_element_by_id(‘com.android.calculator2:id/digit_2’)
这样就定位到了计算器应用中的“2”按键,那么如何实现单击“2”的操作呢?
代码语言:javascript复制button1.click()
同样也可以根据name定位元素,在右侧下方Node Detail中可以看到该按键的“text”为2,代码实现如下:
代码语言:javascript复制button2 = driver.find_element_by_name(‘2’)
button2.click()
2. 应用Chrome 浏览器ADB插件获取元素信息
第1种方法适用于Android平台原生应用的元素定位,那对于内嵌H5页面的混合应用采用何种方式定位元素比较方便呢?小编在这里介绍一下基于Chrome浏览器的ADB插件元素定位方法。
首先需要下载安装Chrome浏览器,安装完毕后进入到Chrome应用商店,在左上角搜索框中输入“adb”,就可以过滤出所有的ADB相关的扩展程序,选择扩展程序ADB将其添加至Chrome中,添加完成后,将会在Chrome浏览器工具条中展示对应的图标:
之后启动安卓设备中的浏览器,访问百度首页,即可出现下图所示界面:
单击inspect,出现下图所示的界面元素信息:
单击右侧第一个标有箭头的图标,目的是定位点击操作的元素信息,然后在左侧点击“百度一下”按钮时,右侧会高亮显示对应的界面元素,如下图所示:
“百度一下”按钮对应的元素信息:
代码语言:javascript复制<button id=”index-bn” class=”se-bn “ type=”submit”>百度一下</button>
具体的代码实现:
代码语言:javascript复制driver.find_element_by_css_selector(‘button.se-bn’)
CSS选择器作为H5元素定位方式之一,通过Chrome-inspect获取前端页面源码中HTML标签和CSS选择器,具体书写规范:如果一个a标签,class是“x1 y1”,需要写成“a.x1.y1”,前面是需要带上标签名的,然后选择器名中的空格要用点代替,H5页面同样也可以利用id定位元素,代码实现:
代码语言:javascript复制driver.find_element_by_id(‘index-bn’)
注意!!!
对于内嵌H5的混合应用来说,原生态页面和Webview分别属于两个不同的上下文(Context),原生页面默认的Context是“NATIVE_APP”,而Webview默认的Context为“WEBVIEW_被测包名”。因此,当在原生态页面和H5页面切换操作时,需要先切换上下文,代码实现如下(以新浪微博举例):
代码语言:javascript复制contexts = self.driver.contexts
self.driver.switch_to.context('WEBVIEW_com.sina.weibo')
self.driver.switch_to.context('NATIVE_APP')
3. 应用Inspector获得元素信息
除了上述两种方式,用户还可通过Appium自带的Inspector来查找定位元素,这里不再赘述此种方法的定位步骤,代码实现与上述两种方式相同。
四、utx模块引入
1. utx背景介绍
基本的Appium unittest框架只能运行全部用例,不支持按照模块执行部分用例,可扩展性较差,那么如何实现按照模块执行用例呢?
(1) utx扩展了Python unittest框架的功能,只需要导入utx库,用例的执行顺序就会和编写顺序一致;
(2) utx支持用例自定义标签,在tag.py里边添加标签,可以对测试用例指定多个标签。全部用例默认带有ALL标签。
2. utx库导入步骤
Step1: Python自带库不包含utx,需要自建utx库,网上有作者提供了开源代码,可直接将utx包导入到自己的代码路径下,并修改部分代码以适应自身编译环境;
Step2: 导入utx模块后,需要按照如下图所示的demo更改对应文件的代码:
更改tag.py文件代码,仅通过SMOKE = NewTag(“冒烟”) 即可实现SMOKE标签新建,在每条测试用例前加入该段代码,表示这部分用例是SMOKE模块,执行用例的时候可以仅执行SMOKE的用例。
Step3: 如果需要仅执行固定标签的用例,还需要在setting.py中设置:
Step4: 执行效果如下图所示,仅执行标签为SMOKE的用例:
五、Appium在项目中的应用
1. 前期准备工作(以Android为例)
Step1:安装Nodejs;
Step2:JDK的安装与配置;
Step3:Android SDK的安装;
Step4:Eclipse的安装;
Step5:ADT的安装与配置;
Step6:ANT的安装与配置;
Step7:Maven的安装与配置;
Step8:Appium的安装与配置;
Step9:运行环境的配置。
【重要提示!!!】
Appium Android系统运行要求如下:
(1)Java 7及以后的版本;
(2)Android SDK API(17以上版本);
(3)真实手机设备(Android虚拟设备也可)。
2. Appium自动化测试过程
Step1: PC端连接设备,使用ADB命令查看连接情况;
Step2: 启动Appium;
Step3: 运行客户端自动化测试脚本;
Step4: 执行完毕,生成测试报告,其中包含执行时间、用例数、通过、错误、失败的用例数及失败详情信息。
六、总结
Appium从入门到精通,小编还需再接再厉~
搜狗测试微信号:Qa_xiaoming
搜狗测试QQ粉丝群:459645679