Appium 脚本录制神器 Appium Inspector
Appium 脚本录制神器 Appium Inspector
1. 简介
Appium Desktop 是一款用于 Mac、Windows 和 Linux 的开源应用,它提供了 Appium Server,Appium Inspector 以及相关的工具的组合。Appium Server 是个图形界面,可以设置选项、启动/停止服务器、查看日志等功能。Appium Inspector 可以查看应用程序的元素,并进行基本的交互、录制等功能。
2. 下载及安装
下载地址:
https://github.com/appium/appium-desktop/releases
下载对应系统的 Appium 版本,安装完成之后。点击 “Start Server”,就启动了 Appium Server。
在启动成功页面点击右上角的放大镜,进入到创建 Session 页面。配置好desirecapability信息之后,点击“Start Session”启动会话就展示出下面的页面。Appium Inspector 元素定位页面:
左侧为屏幕快照:会话加载成功后,应用程序的屏幕快照视图将出现在左侧,你可以在屏幕快照视图中使用鼠标来点击各种UI元素,将会看到它们突出显示。
中间为页面 DOM 树结构:Inspector 窗口的中间部分是应用程序当前页面的层次结构,表示为 XML。可以通过点击树节点,或者点击屏幕快照视图中的元素来导航这棵树,然后它们在视图中会被突出显示。在应用层次结构中会直接将元素的 id 也就是 resource-id值标记在树上,这对于 Appium 定位元素很方便,可以快速看到元素是否有 id。
右侧为元素属性的详细信息:当一个元素在左侧的视图中被选中,右侧会展示出元素的详属性信息列表。这些属性将决定 Appium 定位元素的策略。同时 Appium Inspector 还提供了页面刷新,页面操作的录制功能,元素的点击、输入、清空等功能。
3. Appium 自动化用例录制
Appium Inspect 提供了定位元素与录制用例的功能,使用 Appium Inspect 可以查看移动设备的UI布局结构,方便脚本的编写和生成。下面以 Android 系统为例。在 Android 模拟器上安装 ApiDemos-debug.apk 应用。
测试应用下载地址:
https://github.com/appium/sample-code/raw/master/sample-code/apps/ApiDemos/bin/ApiDemos-debug.apk
请先下载该apk并安装到测试设备,之后我们会基于该app进行自动化测试。本文中使用的 Android 系统的测试模拟器是网易MuMu模拟器,请确保在录制脚本前模拟器已正常启动并成功连接到电脑。
下载后安装到测试设备,之后我们都要用这个app,本文中使用的是模拟器,在录制脚本前开启测试设备。并且通过命令行查看该设备已连接成功。使用下面的命令查看设备是否连接:
adb devices
命令行中输入“adb devices”回车,展示出下面的内容,即说明设备已连接。
$ adb devices List of devices attached 192.168.56.101:5555 device
上面的结果中,“192.168.56.101:5555” 代码设备的名称,“device”代码设备的状态,说明设备已连接。如果是其它状态,需要重新连接设备,或者在设备上检查是否打开USB调试模式。
4. 获取应用包名和页面名称
移动端的包名(也就是Package)作为每个app的唯一标识,每个APP都有自己的Package Name,且每个设备上相同的包名的APP,只允许安装一个。页面(也就是Activity)是Android组件中最基本,也是最常见的四大组件之一,可以理解为一个页面就是一个Activity,移动端打开一个app的页面,在操作页面的时候会发生页面的跳转,也就是Activity之间发生了切换。在编写测试脚本之前,首先要获取应用的包名以及启动页的页面名。
获取包名,终端进入aapt所在目录(Android SDK的build-tools目录下),输入:
aapt dump badging [app名称].apk
运行结果:
图中“package:name”对应的结果是包名,“Lauchable-activity:name”对应的结果是“包名+页面名”。但是有些不符合规范的应用,通过aapt命令无法获取到 “Lauchable-activity:name” 这部分内容。
针对上面的问题,我们需要在测试设备上启动APP,然后在终端输入如下命令:
Mac/Linux 系统:
adb logcat | grep ActivityManager
Windows 系统:
adb logcat | findstr ActivityManager
运行结果如下图:
通过adb logcat命令也可以获取到包名和启动页的页面名。
5. Appium-desktop 自动化用例录制
1. 启动Appium Server
使用 Appium Inspector 录制测试脚本,首先需要启动 Appium-desktop,点击“Start Server”,如下图:
2. 打开inspect工具
点击右上角放大镜“Start inspector Session”按钮,打开 inspector 工具,图形页面如下:
inspector就是探测器,给它相应的参数,启动app帮你分析移动端APP的UI界面,还可以使用它录制脚本,支持导出多种语言的测试脚本。
3. 配置Desired Capabilities信息
- platfromName:使用哪个移动操作系统平台,这里可以填Android、iOS以及FirefoxOS
- deviceName:录入使用的移动设备或模拟器,这里可以随便填,但必须得有此项
- appPackage:录入你要启动的android应用程序包,我们填“io.appium.android.apis”
- appActivity:录入App启动的首个Activity,我们填“.ApiDemos”或者“io.appium.android.apis/.ApiDemos”
更全面的Desired Capabilities请参考官网(https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md)
4. 启动Session
点击 “Start Session”,开启下图界面:
界面分为四块:
- 最上方菜单主要是对页面的操作:比如“选择元素”、“刷新页面截图”、“录制”、“搜索元素”等等。
- 左边是启动APP的界面
- 中间为当前界面布局结构展示
- 右边是选择元素后,具体的属性值,也可以对其进行简单操作,比如点击,输入等。
5. 录制脚本
这是一个很实用的功能。对于appium的初学者,可以通过录制功能了解编写用例的时候需要使用哪些API,有哪些编写规范等问题。可以作为一个很好的参考。
点击“开始录制”按钮(小眼睛图标):
左侧选择要操作的页面元素,在右侧选择要做的操作:
Tap为点击元素,Send keys为文本框录入,Clear为清空文本框。利用上图1,2步组合,就可以实现对app的操作:比如我们在截取的页面中鼠标点击“Views”->点击Tap,再点击“Buttons”->点击Tap。每操作一步,就会Recorder模块自动生成对应步骤脚本。默认生成的语言为Java-unit,如果想生成其他语言,只要点击下拉栏选择相应选项即可,这里使用的是 python 语言。
将整个测试用例执行过程 “点击 Accessibility-> 点击 Accessibility Service -> 点击设置按钮” 录制下来之后,想要执行,首先要点击“show/hide boilerplate code”,显示样板代码(按钮底色变为深蓝色)之后点击右上角“复制”按钮,粘贴到编辑器中,就可以简单运行,详细代码如下:
# This sample code uses the Appium python client # pip install Appium-Python-Client # Then you can paste this into a file and simply run with Python from appium import webdriver caps = {} caps["platformName"] = "android" caps["deviceName"] = "emulator-5554" caps["appPackage"] = "io.appium.android.apis" caps["appActivity"] = "io.appium.android.apis.ApiDemos" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) el1 = driver.find_element_by_accessibility_id("Accessibility") el1.click() el2 = driver.find_element_by_accessibility_id("Accessibility Service") el2.click() el3 = driver.find_element_by_id("io.appium.android.apis:id/button") el3.click() driver.quit()
上面是录制出来的代码,录制生成的代码需要手动优化,添加需要的单元测试框架(比如 Pytest,Unittest)来使代码更优雅。代码录制对刚入门的人来说还是比较实用的,它的缺点也是很明显:
- 所有的代码都会在一个文件里,显得代码非常的冗余
- 不能解决工作中大部分的场景
所以测试人员会使用 Appium 的 API 手动编写测试脚本,结合参数化、数据驱动以及 PO 设计模式等,开发一套符合实际项目需要的测试框架。这部分内容后面章节会详细讲解。
小结
是不是初步体验到了 Appium 的强⼤,更多功能我们⼀步步来探索。
<p> 专刊包含了10+年经验测试架构师对测试职业发展的深度解读 帮助你掌握当下 BAT 流行的 App 自动化测试技术基础技能和工具使用;以及从入门到进阶的自动化测试实战经验,在面试中能够脱颖而出。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p> <p> <br /> </p>