一.引言
在移动应用自动化测试领域,Appium 是一款广受欢迎的开源工具,它允许测试人员使用多种编程语言对 iOS 和 Android 应用进行自动化测试,我们今天主要讲解Android应用。而 Appium Inspector 则是 Appium 生态系统中的一个重要组件,它为我们提供了可视化的界面,方便我们查看应用的 UI 结构、定位元素以及调试自动化脚本。
二.环境准备
1.安装Java
建议Java1.8或Java11版本。网上有具体安装教程,这里不做讲解。java -version查看。
2.安装Android SDK
测试 Android 应用,需要安装 Android SDK。我是从 Android 开发者官网下载 Android Studio,安装过程中会自动安装 Android SDK,同时配置好环境变量。
3.Node.js 环境
安装命令行版本的 Appium Server
需要 Node.js
环境。建议使用版本不小于 18.0.0。确保正确安装 Node.js
以便启动 Appium
服务。Node.js下载官网,按照本机对应的操作系统下载,选择对应的安装路径,添加环境变量。
最后在命令行中验证:
node -v //显示node.js版本
npm -v // 显示npm版本
4.安装appium
在命令行输入:npm install -g appium
或者安装 Appium Desktop(GUI 版) Appium-Desktop官方下载
安装 Appium Doctor(环境检测工具): npm install -g appium-doctor
检查Android环境是否完整: appium-doctor --android
保证没有红色error,如果有需要一条一条解决
部分warn可选择实际情况安装或者不安装工具
5.uiautomator2驱动安装
Appium对Android应用程序自动化的最大支持是通过Uiautomator2 driver实现的
命令行输入:appium driver install uiautomator2
6.安装Appium Inspector
三.使用教程
1.启动Appium Server
appium --base-path=/wd/hub
2.打开Appium Inspector
配置 Capabilities
在 Capability Builder 区域,我们需要填写一系列参数来指定测试设备和应用的相关信息。常见的参数如下:
- platformName:设备的平台名,对于 Android 设备,填写Android;对于 iOS 设备,填写iOS。
- platformVersion:Android 内核版本号,可以通过adb shell getprop ro.build.version.release命令获取。
- deviceName:设备名,可以使用 ADB 命令adb devices -l获取设备的详细信息,其中包含设备名。也可以使用设备的序列号(udid)。
- appPackage:apk 的包名,在 Android 系统中是判断一个 App 的唯一标识。如果被测对象是自研的 APP,可以直接询问开发人员获取包名。也可以通过 ADB 命令获取,连接手机,打开想操作的 APP,在命令行中输入adb shell "dumpsys window | grep mCurrentFocus",命令输出结果中packageName后面的内容即为包名。
- appActivity:应用的启动 Activity,可以理解为启动名或启动页。获取方式与appPackage类似,使用上述 ADB 命令,输出结果中activityName后面的内容即为启动 Activity。
- noReset:可选参数,默认为false。如果设置为true,则在每次启动应用程序时不会重置应用程序的状态,例如不会清除应用数据、登录状态等。
- automationName:指定 Appium 使用的自动化测试框架的名称,对于 Android 设备,一般使用UiAutomator2,这是推荐的自动化引擎。
配置好 Capabilities 后,点击 “Start Session” 按钮,Appium Inspector 会尝试连接测试设备并启动指定的应用。
从图中我们发现Appium Inspector已经启动,下面再详细讲解一下里面的功能
Appium Inspector 的主要功能如下:
-
元素定位和查看:Appium Inspector 允许通过简单的点击来选择和定位应用程序中的 UI 元素。可以直接在应用程序界面上点击元素,然后 Inspector 会显示元素的属性信息,如 ID、类名、文本内容等。这样就可以轻松地确定元素的定位策略和属性,用于后续的测试脚本编写。
-
执行操作:Appium Inspector 提供了一些操作按钮,可以模拟用户在应用程序上的操作。例如可以点击按钮、输入文本、滑动屏幕等。这样可以验证应用程序的交互和功能。
-
自动化脚本生成:Inspector 还具有自动化脚本生成功能,可以根据用户在应用程序上的操作生成相应的自动化测试脚本。这样可以快速生成测试脚本的起点,然后进行进一步的定制和扩展。
-
元素搜索和筛选:Inspector 提供了搜索和筛选功能,可以找到特定的 UI 元素。可以使用属性值、文本内容等条件来搜索和筛选元素,从而快速定位到目标元素。
总之,Appium Inspector 是一个强大的工具,提供了图形界面和交互式的功能,帮助开发人员和测试人员在进行移动应用程序的 UI 分析、元素定位和自动化测试脚本编写时更加便捷和高效。
左侧 - 快照视图(Snapshot View)
显示应用程序的屏幕截图,我们可以在这个视图中直观地看到应用的界面。通过点击 “Select Elements” 按钮,然后在屏幕截图中点击要查看的元素,右侧的元素信息视图会显示该元素的详细信息,包括xpath、index、package、class、text、resource - id等。
中间 - 元素层次结构视图(Element Hierarchy View)
以 XML 格式展示应用程序的层次结构,通过单击树节点或者点击快照视图中的元素,可以导航这棵树,被选中的元素会在视图中突出显示。在应用层次结构中,元素的resource - id值会直接标记在树上,方便我们快速查看元素是否有唯一标识,这对于 Appium 定位元素非常有帮助。
右侧 - 元素信息视图(Element Information View)
当在快照视图或元素层次结构视图中选中一个元素时,这里会显示该元素的详细信息以及对该元素的潜在操作。例如:
- Tap:模拟点击操作。
- Send Keys:如果元素是输入框,可以使用这个选项来填写对应的内容。
- Clear:清除输入框中的内容。
- Copy Attributes to Clipboard:复制当前页面元素的属性信息到剪贴板。
- Download Screenshot:下载当前元素的截图。
- Get Timing:获取选中的元素响应所需的时长。
3.定位元素
如图,这就是我们的元素定位区域,我们可以通过xpath,resource-id定位
例如在Java中:
driver.findElement(By.xpath("//android.widget.TextView[@text=\"Calculator\"]"));
driver.findElement(By.id("com.rp.calculator:id/negative"));
这部分的功能区分别为Tap,Send Keys,Clear,Copy,Download Screenshot,Get Timing
4.录制自动化脚本
点击上方的Start Recording后
在预览画面中使用鼠标模拟用户操作,元素定位区实现点击,输入等效果。
操作完成后,点击Pause Recording结束录制
完成录制后,点击Recorder查看录制的脚本。如图就是脚本的源代码。我们可以自行选择自动化测试框架
总结
如上就是简单的入门操作。我们通过配置好环境,运行Appium server和Appium Inspector,这部分需要对安卓APP有一定的基础,了解adb命令。进入session后,我们就可以在Appium Inspector 中操作,我们可以模拟用户操作录制脚本,也可以查看脚本的源代码。Appium Inspector 为我们提供了便捷的可视化界面,帮助我们更好地理解应用的 UI 结构,快速定位元素,从而为编写高效的自动化测试脚本奠定基础。更多appium知识可以查看官方文档,学习更多