自动化测试之路 —— Appium使用教程
Posted Austin_zhai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化测试之路 —— Appium使用教程相关的知识,希望对你有一定的参考价值。
@TOC
1.目的
当今社会,人们的生活几乎已经无法离开各种的APP了,它提供给我们的便利与服务意义远远超出了其本身的软件价值。作为测试来说移动应用也早已是各大互联网公司的拳头产品,其本身的开发周期短,附属产品价值高等特性决定了今后的主导地位。
那么在日常的测试活动中,移动应用的质量保障就成为了各个测试团队的主要课题,面对高速迭代的功能、日益缩短的项目周期、逐渐庞大的人力与资源投入,以上的这些因素都会让测试团队不得不在项目中加入自动化测试策略。
Appium作为一个自动化移动应用测试框架来说,就可以很好的满足大部分移动应用测试的需求。作为当今仍然主流的自动化测试框架,各位测试同学要熟练的使用也就成为大家日常的基本内容之一。
2.说明
1.此笔记的中所使用的操作系统为Win 10,笔记中所涉及的软件版本有可能会因为时间的推移而导致不匹配或其他额外的操作,请大家有针对性的选择阅读与参考。
2.这里因操作系统关系,只针对安卓与鸿蒙OS来进行教程讲解,后续会推出ios的相关Appium安装与配置、日常使用教程。
3.本文是使用Python语言配合Appium进行讲解,其他语言相关教程不在此做赘述。
3.接上回
前一篇我们已经成功的配置了环境与安装Appium,服务也可以正常运行起来了。接下来就给大家展示一下日常工作中如何通过Appium开展相关工作。
4.连接设备
4.1 设置
首先将手机的开发者模式打开,不同手机的开启方法不同,这里演示的测试机为华为mate20X,其他机型的开启方法大家可以直接百度搜索。
进入手机的【设置】选项
进入【关于手机】
点击【版本号】7次,即可进入开发者模式
退回【设置】主菜单,选择【系统和更新】
选择【开发人员选项】
打开【USB调试】,如果不想每次调试都选择传输照片或传输文件的话可以打开【“仅充电”模式下允许ADB调试】
4.2 调试
如果已经跟着前一篇文章安装完adb并配置过环境变量的话,可以直接在cmd中进行设备连接调试。
使用数据线连接上手机,如果跳出USB调试确认框且电脑为自己信任的设备时,选择“始终允许使用这台计算机进行调试”并确定,否则只需要点确定即可。
在保持连接且已经授权USB调试的情况下,调出cmd,输入adb devices
如果连接成功就可以看到你的手机deivce id
device id 可以在手机的【设置】中的【状态消息】可以查到。
如果出现device not found,优先检查手机的驱动是否安装正确,也可以到硬件管理器中去查看对应的设备驱动是否异常。
这里推荐使用adb driver installer这个软件来安装对应的设备驱动,网上很多的,随便百度一下都有下载。
另外如果像图中显示出现了多个设备连接,其中一个的端口是5555 的话,后续的一些操作可以指定对应的device id去进行操作,比如adb -s XXXXXX(device id) shell
来进行操作。
4.3 参数获取
我们想要通过Appium来运行相关APP,还需要获取与其相关的几个参数。
appPackage:包名,在android系统中是判断一个App的唯一标识。
appActivity:这里可以理解启动名或启动页。
platformName:设备的平台名,Android或iOS。
deviceName:设备名,这里填入刚才ADB里的device id即可。
以下为获取appPackage与appActivity的几种方法。
1.查看源代码
这里推荐这种方法,如果被测对象是自研的APP,直接问下对应开发同学,这两个参数的值就可以啦,省时省力。
2.使用ADB
在手机连接的状态下,先打开想操作的APP,之后在cmd中输入adb shell "dumpsys window | grep mCurrentFocus"
即可查看对应APP的appPackage了。如果有多个设备,则需要先用adb -s XXXX shell
来制定进入的设备,再输入dumpsys window | grep mCurrentFocus
查看即可。
红框处的就是appPackage。但这里需要注意,因为你进入APP后可能会进行其他操作,所以当前APP所在的页面不一定是启动页面,所以appActivity的值不一定是对的。
这边我们使用monkey命令来进行appActivity的获取,使用命令adb shell monkey -p com.xxxxxxx(appPackage) -vvv 1
来进行获取。
找到对应的appActivity名即可。
另外可以使用logcat来进行两者的快速查询。
首先启动你要获取的APP,接着将logcat的日志内容重定向到电脑的指定目录。adb logcat>E:/app_log.txt
这样就讲日志文件重定向到了E盘根目录下,文件名叫app_log。操作完成后使用Ctrl+c结束这个命令。然后查看指定路径下的日志文件。
在日志文件中搜索Displayed关键字,可以直接找到appPackage与appActivity的对应值。
当然也还有其他很多的方法可以查看,这里仅介绍几种较为简单的获取方式作为抛砖引玉。
5.启动APP
5.1 启动Inspector
确保Appium-Server已经启动,并且连接手机。
然后启动Appium Inspector,一般通过Appium启动即可,如果没反应可以去官网单独安装Inspector。
启动后界面如下
画面自上而下,分别为:
Automatic Server:使用的为本地的服务IP与端口,用的最多的选项;
Custom Server:可以使用自定义的Appium服务,并发的时候会用到;
Select Cloud Providers:使用云服务商提供的服务;
Allow Unauthorized Certificates:代表允许使用未经授权的证书;
Use Proxy:使用代理;
Desired Capabilities:启动参数的配置;(常用项)
Saved Capability Sets:将已配置的参数进行模板保存;
Attach to Session:添加会话至。
5.2 配置Desired Capabilities
我们要启动APP就需要在Appium Inspector中填写对应APP的启动参数。
通过右边的加号来进行属性的添加
填入之前获取的各项参数
填写完成后后边会出现JSON格式的表示信息,然后点击【Start Session】即可启动APP。
启动时会在测试手机上安装Appium的APP,启动完成后手机会自动打开你启动的APP,并且在Inspector上显示与APP同步的画面。
5.3 界面说明
自左向右,依次为:
Native App Mode:切换为原生APP模式;
Web/Hybrid App Mode:切换为混合APP模式,如果APP有内有小程序(Uni App)或者H5的话可以试试这个模式;
Select Elements:选择元素模式,在左侧预览窗口中鼠标的点击模式会变成元素的选取,而不是直接模拟点击的操作,类似于浏览器调试模式的Ctrl+Shift+C;
Swipe By Coordinates:使用坐标滑动,顾名思义,就是利用鼠标在A和B点分别进行点击,之后会根据点击的顺序与方向进行相应方向的滑动动作模拟;
Tap By Coordinates:使用坐标点击,类似于现实中的点击动作,用哪点哪,同步设备与预览窗的画面;
Back:退回上一步,类似手机的返回按钮;
Refresh Source & Screenshot:刷新资源与截图,一般在Select Element模式下用的比较多一点,在元素抓取的过程中如果需要查看功能互动或页面跳转的时候可以进行画面的刷新操作,但Swipe By Coordinates与Tap By Coordinates模式下就用不太到了;
Start Recording:开始录制,我们可以在打开这个选项后直接对APP的预览画面进行一些操作,Appium会自动帮我们把动作转换成指定语言的相关代码;
该功能不太推荐测试同学使用,特别是已经有简单代码基础的同学,它默认会使用xpath的定位方式。xpath的定位方式十分的脆弱,特别是绝对路径定位,一旦发生变化,脚本的维护就会变得十分的困难,如果一定要用,推荐使用相对路径的定位方法。
Search for element:搜索元素,我们可以根据各类元素的定位条件进行元素的相关搜索,方便我们快速定位。
Copy XML Source to Clipboard:复制页面元素,可以将该页面中所有的元素信息复制。
Quit Session & Close Inspector:关闭会话且关闭Inspector。
当我们选中一个元素后,被选中的元素会显示以下选项,自左向右依次为:
Tap:模拟点击;
Send Keys:如果为输入框的话可以使用这个选项来填写对应的内容;
Clear:可以对编辑框内的内容进行清除;
Copy Attributes to Clipboard:将选中的元素相关信息复制到粘贴板中;
Get Timing:获取选中的元素响应所需的时长。
以上就是一些基础的Appium操作与相关介绍,但对于日常的自动化测试工作来说,仅仅掌握这些还是不够的。下一篇我们将会使用Python+Appium来对APP进行一些自动化测试场景的操作与实践。
以上是关于自动化测试之路 —— Appium使用教程的主要内容,如果未能解决你的问题,请参考以下文章
教你用Appium搭建Android自动化测试框架(详细教程)