搭建Appium测试环境分为三部分。第一部分是使用MyEclipse(也可使用其它IDE)中的Maven添加与Appium有关的jar包;第二部分是安装Appium server或者desktop版,用于解释java代码;第三部分为安装Android SDK用于创建虚拟机器或者连接真机。(因为目前缺少mac机器,无法在苹果ios进行测试,所以这里选择Android作为测试的平台,最后测试采用的是Android版本号为5.0.2的真机,也可用模拟器)。环境搭建步骤因为网上资料很全,所以不重点说明,可参考http://www.testclass.net/appium/
经过上述步骤已经能够搭建出基于java client + appium server + android的自动化测试环境。本节将以新建歌单为例,介绍如何使用Appium自动化测试工具对网易云音乐App进行测试。
1. DesiredCapabilities设置
通过设置DesiredCapabilities来说明测试的机器、环境、入口等。代码如下:
DesiredCapabilities cap=new DesiredCapabilities();
cap.setCapability("automationName", "Appium");//appium做自动化
//cap.setCapability("app", app.getAbsolutePath());//安装apk
cap.setCapability("deviceName", "oppo-oppo_a33-9729eb6b");//设备名称
cap.setCapability("platformName", "Android"); //安卓自动化还是IOS自动化
cap.setCapability("platformVersion", "5.1.1"); //安卓操作系统版本
cap.setCapability("appPackage","com.netease.cloudmusic");//被测app的包名
cap.setCapability("appActivity",".activity.LoadingActivity");//被测app的入口Activity名称
cap.setCapability("noSign", "True"); //不重新签名apk
cap.setCapability("noReset", "True"); //是否不需要重新安装app
cap.setCapability("unicodeKeyboard", true);//使用 Unicode 输入法
cap.setCapability("resetKeyboard", true); //重置输入法到原有状态
其中第3行注释为设置app的位置,如果待测试app未安装可以通过指定app的位置直接进行安装,如果已安装可以将该行代码进行注释。
第[4-6]行是设置测试的机器信息。其中设备名称中的udid需要通过在cmd命令行下,使用下面的命令得到:
adb devices
第[7-8]行是设置程序的包名和app测试的入口。一般可以在Android源文件中的AndroidManifest.xml中找到,如果没有源码,先对待测app进行一些操作,然后通过cmd下的命令:
adb shell dumpsys activity activities > log.txt
最后在log.txt中找到相应的信息,如下图所示:
其中红框部分分别为appPackage、appActivity。
第[9-10]行是设置每次测试是否不重新安装app以及签名。
第[11-12]行是解决在使用sendKeys()方法时出现无法输入中文的问题。
2. 定位App上的元素
测试过程中非常重要的一个环节是如何定位App上的元素,本文使用Android SDK中的uiautomatorviewer工具来辅助寻找定位信息。uiautomatorviewer可以显示App页面上每个元素的class,index,text等,能够方便找到页面元素的定位信息,如下图所示:
3. 自动化测试代码与测试结果
通过2节找到相关元素的定位信息,并通过以下代码,实现自动化新建歌单,歌单名字为“新创建的歌单”。
driver.findElement(By.name("我的")).click();//找到页面text为"我的"的元素
driver.findElementById("com.netease.cloudmusic:id/ana").click();
driver.findElement(By.name("创建新歌单")).click();
driver.findElementById("android:id/input").sendKeys("新创建的歌单");
driver.findElement(By.name("提交")).click();
将以上代码放入循环中,不停的新建歌单,直到到达上限。然后在歌单达到上限的基础上,再测试新建歌单与恢复歌单功能。测试内容及结果如下表所示:
编号 |
用例名称 |
测试步骤 |
测试结果 |
1 |
歌单上限 |
使用Appium不停新建歌单 |
如图1所示,歌单上限为1000 |
2 |
歌单达到上限后继续新建歌单 |
在“歌单上限”测试基础上,继续新建歌单 |
如图2所示,提示已达到上限 |
3 |
歌单达到上限后恢复歌单 |
在“歌单上限”测试基础上,进行恢复歌单 |
如图3所示,提示恢复失败 |