自动化测试工具Appium实操分享

Appium是一款开源的、跨平台的、多语言支持的移动应用自动化工具,通俗来说是手机App自动化工具。它目前可以测试的app如下三种,原生App、混合App、移动Web。Appium支持许多主流语言编写测试脚本、不需要重造轮子,应用范围非常广泛,测试效率非常高效,是一款强大的自动化测试框架

首先我们一起看下Appium的架构图,主要有客户端、服务端、测试平台SDK、手机端自动化驱动程序这四部分。

客户端主要是用来编写脚本,还包括一些手机安装工具等。服务端是Appium的主体,Appium Server可以装在自己的本机上,也可以装在服务端。测试平台SDK是开发厂商(如Google)提供的SDK,需要在本机上去安装。

手机端自动化驱动程序,这部分下面给大家展开详细讲一下。

安卓手机端驱动介绍

Appium目前主要支持Andriod 4.2以上的系统。

UiAutomator/UiAuromator2

UiAutomator是安卓手机自带的驱动。现在很多安卓手机的系统都是定制化的,如果没有阉割的太多,还是含有UiAutomator驱动。在使用Appium时候大多数使用优化过的UiAuromator2驱动,但UiAuromator2并非适用所有系统,如果运行出现问题可以切换回UiAuromator。

驱动工作原理

 

Appium并不负责手机具体自动化任务。相当于是一个中间代理,通过Appium识别自动化脚本并转化成手机UiAutomator执行的指令,手机识别在执行自动化任务。

Appium环境配置

1、资源准备

首先需要准备一台安卓手机(真机演示),系统最好是6.0以上,目前可以支持到4.2。

计算机配置(Windows为例)Windows 7 以上,建议使用Windows 10内存:最小4GB,推荐8GB以上硬盘:4GB以上分辨率:1280*800以上

以上是Goolge官网推荐配置。

2、安装客户端

首先需要在电脑上安装好Python环境

安装Appium-Python-Client包命令:pip install -I https://mirrors.aliyun.com/pypi/simple/ Appium-Python-Client

自动安装最新的Appium-Python-Client 和Selenium库(报错下载不下来,可以使用清华或阿里云代理)

3、安装服务端

进入Appium官网进入下载页面,根据自己的操作系统对应版本的下载Appium.Server.GUI

目前Appium官网上几乎都是带GUI的,已经没有纯Server端了,可以同时支持mac和windows。

 

4、电脑端环境

这部分就稍微有些复杂了。

JAVA环境:JAVA_HOME、Path、ClassPath

Android-SDK环境:通过搜索下载Android-SDK包,还可以在谷歌下载Android studio。

有了Android-SDK还需要配置环境变量:新建ANDROID_HOME(SDK绝对路径目录,最好不要带有中文)

Path中添加:% ANDROID_HOME%\platform-tools% ANDROID_HOME%\tools

这两个工具是后面做测试的时候会用到的,加了之后,还可以使用ADB的命令。

ANDROID_HOME要在系统环境变量中新建。

另外在Path环境变量中添加:ANDROID_HOME%\ platform-tools和% ANDROID_HOME%\ tools

下面是示例截图:

 

5、手机端环境

1)在关于手机页面,连续点击版本号直到激活开发者模式。

2)再进入开发者模式,将USB调试打开。(否则Appium无法自动执行)

3)手机通过USB连接电脑,并在手机允许电脑USB调试。

6、验证adb链接

最后我们需要验证一下我们的环境变量是否安装成功。

在CMD界面输入adb devices –l ,看一下是否可以查询到已连接的手机。

若不能识别,请确保安装对应的手机USB驱动。

(查询到连接成功)

Appium使用

1、启动Appium

1)配置端口和地址。

2)Edit Configurations配置环境变量。

3)启动服务器。

 启动成功界面显示The server is running。这个界面主要显示的是在运行过程中的一些日志文件。点击右上角“放大镜”进入Inspector Session界面。这个界面是用来测试App时进行界面元素获取时要用到的。下载的按钮用来获取日志文件,暂停键用来暂停该服务。

(启动成功的界面)

点击放大镜后进入进入Inspector Session,如下图所示:

 

需要配置被测应用相关的Desired Capabilities项目之后再启动。

下图我贴了一张腾讯会议App的,需要填下面这些选项,从第一项开始,点右侧的“+”,就会一级一级地加下去。

配置完成之后,在右侧的区域,会显示成一个json的串。

 

在测试之前,我们还需要获取两项非常重要的内容,appPackage和appActivity。

首先需要将app打开,在CMD界面输入命令adb shell dumpsys activity recents | findstr intent={

这两项信息查到之后,将其填到配置项里面。其他的配置项在后面讲解代码的部分给大家详细讲。

配置完成后进入元素查看界面,如下图所示,这个界面主要用于元素定位。

元素定位是使用Appium必须要掌握的一项技能,指的是将手机上的一些功能按钮定位出来,可以通过id或xpath的方法。下图展示的是“快速会议”的元素信息。

 

在最右侧可以看到id属性,com.tencent.wemeet.app:id/hk 这个指的是resource-id。一个app中有很多个id,我们的元素定位如果用id定位的话,用到的就是resource-id。

Appium自动化脚本

先给大家介绍一下App自动化的基本流程。

1、选中界面元素

2、界面元素操作

点击、输入、拖拽、滑动、获取界面元素属性,以上这些是Appium提供的能力

3、逻辑处理

这部分考验代码功底,与具体自动化框架无关

元素定位 

元素定位语法:find_element(By.方法,'value’)

常用定位方式:1.通过ID定位2.通过NAME定位3.通过class_name定位4.通过xpath定位5.通过link_text定位6.通过css_selector定位 

这里要说明的是,Appium提供了CSS定位,但是没法使用CSS。为什么没有办法用?因为我们现在大部分app都是原生+混合的,而CSS是web专用的,所以是没有办法在原生和混合的app中去做定位的。我们在原生或者混合的app里面用的最多的定位方式是id、xpath和link_text。

ID定位 

语法:driver.find_element(By.ID,‘resource-id’)

BY.ID中的ID一定是大写的,逗号后面跟的字符串是我们在元素定位的过程中发现的resource-id。在定位的过程中,resource-id可能会出现多个,代码写到这,系统会默认识别第一个。

还有一个是accessibility id,这个在前面元素定位的界面中,我们也可以看到。

语法:driver.find_element(By.ACCESSIBILITY_ID,'accessibility id')

Xpath在appium中的应用 

在实践的过程中,用得最多的是Xpath,这里给大家列出了几个Xpath表达式:

1.通过ID选择//*[@resource-id=“”]

2.通过class选择//android.view.ViewGroup

3.通过其他属性选择//*[@属性=“属性值”]

4.选择子元素//*[@属性=“属性值”]/*

5.选择父元素//*[@属性=“属性值”]/..

Appirum坐标操作 

语法:driver.tap(x,y)

这个方法用得并不多,大家都知道,手机市场上,屏幕种类非常繁多,尺寸也都不一样,这就导致坐标受屏幕的像素所影响。如果你写的一个脚本用的是坐标的定位,给别的同事用,换了一个手机,可能就定位不到了。只有在当某个元素定位不到时,暂时解决定位问题,不建议经常使用。

bounds值 

例如bounds值为 [60,231][420,710],表示该元素左上角坐标是[60,231],右下角坐标为[420,710]

在脚本中上传时,传一个即可,左上角坐标、左上角坐标都可以,通常传左上角坐标。

tap操作 语法:driver.tap(列表中传元组,持续时间) 

运行就直接点击,持续时间是毫秒级,比如我们要按2秒,直接输入2000即可。

滑动(swipe)操作 

语法:driver.swipe(x1,y1,x2,y2)

滑动操作在平时用到的比较多,比如测试微信小程序端、新闻客户端刷新。

滑动需要明确起点和终点,这个语法括号中传的是类似于坐标点,从x1,y1传到x2,y2,这个操作只适用于部分手机,如果手机换了一个大一些的屏幕,就需要变了。

元素操作 

元素操作就是在元素定位的语句后面加一个 .click或者.send_keys()。

1.点击driver.find_element(By.元素类型,‘定位值').click()

2.输入driver.find_element(By.元素类型,‘定位值’). send_keys()send_keys()传的参数格式是字符串

首次运行 

首次运行脚本手机自动新增两个APP,Appium-settings和UiAutomator2,确保可以自动安装,并开启全部权限。后面要跑自动化脚本,这两个APP是不可缺少的。

1.Appium-settings应用会自动安装并启用无界面,打开后闪退,以服务形式存在2.UiAutomator2Appium优化后的安卓底层自动化驱动桌面可能看不到图标,也打不开

Appirum配置 

下面是Appirum代码中的详细配置,针对每一个字段的解说可查看【视频回放】部分。

desired_caps={#移动设备平台'platformName':'Android',#平台OS版本号,写整数位即可'plathformVersion':'10', #设备的名称--值可以随便写 'deviceName':'P30', #提供被测app的信息-包名,入口信息: #1.打开被测app,2.命令行输入以下信息 #adb shell dumpsys activity recents | findstr intent={ #查看当前活动app包名 'appPackage':'com.tencent.wemeet.app', 'appActivity':'.StartupActivity', #确保自动化之后不重置app 'noReset':True, #设置session的超时时间,单位秒,默认60s 'newCommandTimeout':6000, #设置底层测试驱动-1.15默认使用的底层驱动就是UiAutomator2 'automationName':'UiAutomator2',#或者UiAutomator1 'skipServerInstallation':True#跳过UI2的安装,如果第一次运行程序,不要添加该配置}

自动化测试框架Pytest 

Pytest是Python的一款自动化测试框架,在学习自动化测试过程中,我们最开始学习的都是线性脚本,但是当学到一定阶段以及业务复杂度和数据量上来后,我们必须需求一种全新的框架思维来管理和规范我们的测试脚本,从而实现高类聚低耦合的理念。 安装:pip install pytest

运行:命令行输入pytest 文件名 -s

这里还给大家推荐一个报告生成工具Allure,它是开源测试报告框架,支持pytest单元测试框架,可以使用jenkins持续集成工具。

安装步骤:1. Allure数据包2. pip install allure-pytest3.将bin目录加入Path环境变量中

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值