Appium是一款运行于Windows和linux等平台上的开源工具,它提供了AppiumServer、Appium Inspector 以及相关的工具组合。Appium Desktop是Appium包含的一个图形界面应用,我们在其界面上可以进行设置选项、启动/停止服务器、查看日志等操作。使用Appium Inspector可以查看App程序内的元素,并可进行基本的页面交互,以及可以录制测试脚本等操作。
1.下载及安装Appium Desktop
用户在GitHub网站上下载与自己计算机系统对应的Appium版本,安装Appium Desktop之后,启动Appium Desktop,然后在其界面上点击 “Start Server” 按钮,启动Appium Server。
在启动Appium Server成功页面上点击右上角的放大镜,进入到创建Session页面,在这个页面上配置好desirecapability信息之后,点击 “Start Session” 项启动会话后展示出图5-2所示的页面—Appium Inspector元素定位页面,该页面包括的内容介绍如下。
左侧为屏幕快照:可以在左侧使用鼠标选择UI元素,会看到被选择的UI元素高亮显示。
中间为页面DOM树结构:在App结构中会直接将元素的属性值标记在树结构上,这对于用Appium定位App元素很方便。
右侧为App元素的详细信息:当App元素被选中,右侧会展示出App元素的鲜呼吸属性信息列表。这些属性将决定测试人员定位Appium元素的策略。
另外,Appium Inspector 还提供了页面刷新,页面操作,录制,元素的点击、输入等功能。
2.Appium自动化测试用例录制
Appium Inspect 提供了定位元素与录制用例的功能,使用 Appium Inspect 可以查看App的 UI 布局结构,方便脚本的编写和生成。下面以 Android 系统为例。在 Android 模拟器上安装 ApiDemos-debug.apk 应用。
测试App下载地址:
https://GitHub网站/appium/sample-code/raw/master/sample-code/apps/ApiDemos/bin/ApiDemos-dubug.apk
现在该App的apk格式文件并安装到测试设备上,然后我们基于该App进行自动化测试演示。
在录制测试用例(脚本)前先启动装有该App的测试设备,并且通过命令行查看该设备已与计算机连接成功。使用下面的命令查看设备是否连接成功。
$ adb devices
若展示出下面的内容,即说明设备已连接。
List of devices attached emulator-5554 device
展示的内容中,“emulator-5554” 代表设备的名称,“device” 代表设备的状态,说明设备已连接。如果是其他状态,需要重新连接设备,或者在设备上检查是否开启开发者模式及打开USB调试模式。
3.获取App包名和页面名称
移动端的包名(也就是 Package)作为每个 App 的唯一标识,每个 APP 都有自己的 包名,且每个设备上相同的包名的 APP只允许安装一个。
Activity是Android组件中最基本,也是最常见的四大组件之一,可以把它理解为一个页面就是一个Activity。在移动端设备打开一个App的页面,在操作App页面的时候会发生页面的跳转,也就是Activity之间发生了切换。在编写测试脚本之前,我们首先要获取App的包名以及启动页的Activity名字。
获取包名的操作步骤如下。
(1)打开终端,进入aapt工具所在的目录(Android SDK下的build-tools目录)。
(2)输入命令'aapt dump badging[App 名称].apk'。
aapt dump badging [app名称] .apk
运行结果(见图5-3).
图5-3中 “package:name” 对应的结果是包名,“launchable-activity:name” 对应的结果是 “包名+页面名”。但是有些应用通过aapt工具无法获取到页面名称。
针对这个问题,可以通过命令的方式来获取页面名称等消息,在命令行中输入如下命令(macOS/Linux系统)即可:
4.测试用例录制
(1)启动Appium Server
使用Appiuim Inspector录制测试用例,首先需要启动Appium,在启动页面点击 “ Start Sever”项,会出现图5-5所示的界面。
(2)打开Appium Inspect工具
点击右上角放大镜按钮,跳转到新的页面,界面如图5-6所示。
Appium Inspector是探测器工具,我们通过给它设置相应的参数,用它可以分析移动端App的界面,还可以使用它录制测试用例,也可以用它导出多种语言版本的测试用例(脚本)。
(3)配置Desired Capabilites信息(见图5-7)
下面介绍一下图5-7中配置项的用处。
1)platfromName:使用哪个移动操作系统平台,这里可以填 Android、iOS 以及 FirefoxOS
2)deviceName:录入使用的移动设备或模拟器,这里可以随便填,但必须得有此项
3)appPackage:录入你要启动的 android 应用程序包,我们填“io.appium.android.apis”
4)appActivity:录入 App 启动的首个 Activity,我们填“.ApiDemos”或者“io.appium.android.apis/.ApiDemos”
(4)启动Session
在图5-7中点击 “Start Session” 按钮,录制测试用例(脚本)。
Appium的初学者可以通过录制功能,将测试用例录制出来,通过录制出来的测试用例,可以分析和了解录制操作使用的API以及测试用例编写规范等。
点击 “Start Recording” 按钮(小眼睛图标)开始录制测试用例,如图5-8所示。
在开始录制测试用例的界面左侧,选择被测App的页面元素,在右侧选择对页面元素要做的操作,如图5-9所示。
利用图5-9所示的1步和3步组合,就可以实现对App的测试操作。例如,在页面左侧用鼠标点击 “Views” 项,在右侧出现一些选项卡,再点击 “Tap” 选项卡,这时(如果开启了录制功能)就会将这步是操作自动录制生成一段代码,如图5-10所示。
默认生成的测试用例(脚本)为Java语言格式,如果想生成其他语言格式的测试用例(脚本),只要在图5-10中的语言选择框点击下拉栏选择相应语言选项即可,如切换成Python语言。
把上述操作生成的测试用例(脚本)复制到编辑器中,这是可以运行的代码,具体如下
from appium import webdriver caps = {} caps["platformName"] = "android" caps["deviceName"] = "demo" caps["appPackage"] = "io.appium.android.apis" caps["appActivity"] = ".ApiDemos" caps["autoGrantPermissions"] = "true" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) el2 = driver.find_element_by_id("tv.danmaku.bili:id/expand_search") el2.click() el3 = driver.find_element_by_accessibility_id("搜索查询") el3.send_keys("霍格沃兹测试学院") driver.quit()
上面是录制出来的测试用例(脚本)。录制生成的代码在使用前需要手动优化,在代码中添加必要的单元测试框架(如pytest),以便使代码的运行更高校。代码录制对刚入门的人来说还是比较实用的,但是它的缺点很明显:
1)所有的代码都在一个文件里,显得代码非常冗余;
2)不能解决工作中大部分的测试场景。