自动化测试工具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%无套路免费领取】

作为AI语言模型,我没有亲自进行过测试,但我可以提供一些关于Appium测试APP的一般性建议和一些可能的实验发现。 在使用Appium测试APP时,需要注意以下几点: 1. 环境搭建:Appium测试需要先搭建好测试环境,包括安装Appium和配置相关环境,如Android SDK、Java环境等。在测试之前,需要确保测试设备和测试工具的稳定性。 2. 测试用例设计:测试用例的设计需要覆盖APP的各种功能和场景,以确保测试的全面性和有效性。同时,测试用例的设计也需要考虑到不同的测试环境和测试设备,以保证测试结果的可重复性。 3. 测试执行和结果分析:在进行测试时,需要按照测试用例进行测试,并对测试结果进行实时分析和记录,包括测试用例的执行结果、测试设备的状态和测试工具的反馈等。 在测试手机安全卫士时,可能会发现以下几个问题: 1. 安全性问题:测试发现手机安全卫士的防病毒、防骚扰等功能存在一些问题。例如,有些病毒可能会被漏检,或者骚扰电话无法完全阻止。 2. 性能问题:测试发现手机安全卫士的性能存在一些问题,如启动速度较慢、占用内存较大等。这可能会影响用户的使用体验。 3. 用户体验问题:测试发现手机安全卫士的用户体验存在一些问题,如界面设计较为简单,操作流畅度不够等。这也可能会影响用户的使用体验。 需要注意的是,以上问题可能与测试环境和测试设备有关,因此在测试时需要尽可能保证测试环境的稳定性和测试设备的统一性,以确保测试结果的准确性。 总之,通过Appium测试可以发现APP存在的问题,提升APP的质量和用户体验。同时,在测试过程中需要注意测试用例的设计和环境的稳定性,以确保测试结果的可靠性和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值