首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Appium自动化测试框架探索与实践

Appium自动化测试框架探索与实践

作者头像
用户5521279
发布2020-08-21 16:50:48
2.5K0
发布2020-08-21 16:50:48
举报
文章被收录于专栏:搜狗测试搜狗测试

引言

在目前效率为王的互联网时代,移动应用自动化测试逐渐替代原始的手工功能测试,越来越成为测试界的时尚宠儿,小编在这里也为大家介绍下现有的客户端自动化测试框架: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-sdk\android-sdk-windows\tools,对应的启动文件为uiautomatorviewer.bat,启动后展示的UI界面如下图所示:

点击红框中标出的图标,等待其展示启动的计算器应用界面:

这里,小编先给大家讲解如何通过id来获取计算器应用的“2”按键,UIAutomator Viewer界面中点击“2”,在右侧下方Node Detail中可以看到该按键的“resource-id” ,对应的代码实现为:

button1 = driver.find_element_by_id(‘com.android.calculator2:id/digit_2’)

这样就定位到了计算器应用中的“2”按键,那么如何实现单击“2”的操作呢?

button1.click()

同样也可以根据name定位元素,在右侧下方Node Detail中可以看到该按键的“text”为2,代码实现如下:

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,出现下图所示的界面元素信息:

单击右侧第一个标有箭头的图标,目的是定位点击操作的元素信息,然后在左侧点击“百度一下”按钮时,右侧会高亮显示对应的界面元素,如下图所示:

“百度一下”按钮对应的元素信息:

<button id=”index-bn” class=”se-bn “ type=”submit”>百度一下</button>

具体的代码实现:

driver.find_element_by_css_selector(‘button.se-bn’)

CSS选择器作为H5元素定位方式之一,通过Chrome-inspect获取前端页面源码中HTML标签和CSS选择器,具体书写规范:如果一个a标签,class是“x1 y1”,需要写成“a.x1.y1”,前面是需要带上标签名的,然后选择器名中的空格要用点代替,H5页面同样也可以利用id定位元素,代码实现:

driver.find_element_by_id(‘index-bn’)

注意!!!

对于内嵌H5的混合应用来说,原生态页面和Webview分别属于两个不同的上下文(Context),原生页面默认的Context是“NATIVE_APP”,而Webview默认的Context为“WEBVIEW_被测包名”。因此,当在原生态页面和H5页面切换操作时,需要先切换上下文,代码实现如下(以新浪微博举例):

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档