使用Appium测试Android应用程序
Selenium中的WebDriver目前已经成为了Web页面的GUI级自动化测试的标准,已经被万维网协议认可。所以,由此衍生出了用于测试Windows应用程序的Winium,以及用于测试移动端App应用程序的Appium。本实验主要为大家讲解如何使用Appium完成对一个Android上的App应用程序进行测试。
实验简介
Selenium中的WebDriver目前已经成为了Web页面的GUI级自动化测试的标准,已经被万维网协议认可。所以,由此衍生出了用于测试Windows应用程序的Winium,以及用于测试移动端App应用程序的Appium。本实验主要为大家讲解如何使用Appium完成对一个Android上的App应用程序进行测试。
实验目的
(1) 掌握Appium测试环境的安装配置。
(2) 熟练应用常见的ADB命令功能及用法。
(3) 熟练使用Android SDK及Android模拟器。
(4) 熟练使用Appium的核心对象进行自动化测试开发。
实验流程
1. Appium环境配置清单
要正常运行Appium完成对App的自动化测试,需要配置以下环境:
(1) Android SDK,用于执行ADB命令完成与Android的通信,并且利用SDK自带的工具来识别App界面上的元素属性。
(2) Appium:实现了WebDriver协议的服务器,这当然是必不可少的组件。
(3) 下载Appium的针对Java的jar包,并在Eclipse项目中导入该jar包,名称为:“java-client-xxx.jar”。
(4) 在项目中同样需要导入Selenium的jar包,这一步我们已经在学习Selenium的过程中完成。
(5) 安装“夜神”模拟器,至官网“https://www.yeshen.com/”下载并安装即可。
2. 安装Android SDK
(1) 访问网址“http://tools.android-studio.org/index.php/sdk”下载与操作系统版本对应的Android SDK压缩包,并解压到操作系统任意目录即可。目前最新的SDK版本为24.4.1。
(2) 配置环境变量“ANDROID_HOME”并设置到该SDK的主目录,如图所示。
(3) 将“ANDROID_HOME”目录下的“tools”和“platform-tools”添加到“PATH”环境变量中。
(4) 打开命令行,运行命令“adb version”,如果正常运行,说明SDK已经配置完成。
3. 安装Appium
(1) 目前Appium提供两个版本,一个是Appium的Desktop版本,可在“https://github.com/appium/ appium-desktop/”下载,目前的最新版本为“1.2.0-beta.3”。另外一个是早期的传统版本,可在“https://bitbucket.org/appium/appium.app/downloads/”下载,目前针对Windows的最新版本是在2015年发布的“1.4.16”。笔者更喜欢早期的版本,提供的功能更加丰富,后续操作将基于早期的版本进行。
(2) 访问“http://appium.io/downloads.html”下载针对Java的开发包。
(3) 正常安装Appium,可以安装在任意目录中。启动Appium的界面如图所示。
(4) 点击右上角的三角形按钮便可启动Appium服务器。默认情况下Appium使用4723端口来与测试代码进行通信,通常一个端口可以与一台Android设备或模拟器绑定,如果要同时对同台设备发起测试,那么我们可以通过修改不同的端口启动多个Appium服务即可。
4. 安装夜神模拟器及被测应用
(1) 直接去夜神模拟器官网下载并安装模拟器。安装完成后直接电脑上启动。
(2) 打开命令行,运行“adb devices”确认模拟器出现在列表中。
(3) 安装“一笔记账”和“小米计算器”等应用程序,后续实验以该应用为大家做演示。
5. ADB常用命令列表
(1) adb devices:显示当前运行的全部模拟器。
(2) adb -s 模拟器编号 命令:对某一模拟器执行命令。
(3) adb install -r 应用程序.apk:安装应用程序。
(4) adb uninstall apk主包名:卸载应用程序。
(5) adb pull <remote> <local>:获取模拟器中的文件。
(6) adb push <local> <remote>:向模拟器中写文件。
(7) adb shell:进入模拟器的shell模式,可直接运行Linux命令。
(8) adb uninstall apk主包名:卸载应用程序。
(9) adb shell am start -n 主包名/包名+类名:启动应用程序。
(10) adb forward tcp:5555 tcp:8000:设置任意的端口号,作为主机向模拟器或设备的请求端口。
6. 利用Appium查看APK的主包名和类名
(1) 打开Appium,点击最左上角的“Android Settings”按钮。
(2) 勾选“Application Path”,并浏览到指定的APK文件。Appium将为我们显示主包名主类名。
(3) 这个主包名和类包将用于后续Appium的代码中,当然,我们也可以使用am start命令直接在命令行启动应用程序,则命令可以写为“adb shell am start -n com.miui.calculator/.cal. CalculatorActivity”。如果没有这两个属性,我们将无法让Appium来启动被测应用。
7. 利用uiautomatorviewer识别对象属性
Uiautomatorviewer是SDK中内置的一个对象识别工具,比如我们在模拟器中将小米计算器启动后,在SDK\tools目录下运行“uiautomatorviewer.bat”即可打开该工具,并点击工具栏上的“Device Screenshot”按钮可以直接获取到模拟器中当前应用程序界面的元素及属性。通常我们可以组合使用以下几类属性来进行元素定位:
(1) Index:指示当前元素在界面中的所有具有相同class属性的元素中的顺序。
(2) Text:当前元素上显示的文本内容。
(3) Resource-id:元素的ID号。
(4) Class:元素所性的class。
(5) Content-desc:元素的一些动态内容描述。
(6) 组合:综合使用上述属性,完成对元素的定位。
Uiautomatorviewer具体的截图效果如图所示。
8. 启动Appium
保持Appium的默认设置,点击右上角的三角形按钮启动即可,如果出现错误,则查看错误消息定位问题,正常情况下的启动消息如图所示。
9. 对小米计算器进行测试
(1) 创建一个Eclipse的标准Java项目,命名为“AnroidTest”。
(2) 为当前项目导入Appium的Java Client包和Selenium包。
具体的实现代码如下:
|
从上述代码中我们可以看出,所有的操作与Selenium WebDriver几乎是一模一样的,对于其中的用法一点都不陌生。
10. 利用Appium实现滚屏
滚屏是应用程序中经常会用到的功能,其基本操作原理很简单,就是鼠标按住某个坐标点,然后移动到另外一个坐标点上释放即可。在Appium中直接可以调用方法swipe实现滚屏,并且可以指定在多长时间内完成操作,具体代码如下:
|
(1) 请利用Appium完成对“一笔记账”应用程序的测试脚本开发。
(2) 请分别对一个原生应用,一个混合应用进行测试脚本开发,看看其差别。
(3) 请查阅文档,对比Appium与Selenium在功能上的差异。