跟着逻辑走。
第一章 App自动化框架选择
目前较火的自动化工具特点对比:
- Appium(适用于Android&iOS;支持多语言;不需要应用源码)
- Uiautomator(适用于Android;仅Java语言;不需要应用源码)
- Robotium(适用于Android;仅Java语言;不需要应用源码)
- Calabash(适用于Android&iOS;Ruby语言(其他语言不友好);iOS上需要应用源码)
第二章 Appium简介
Appium是一个自动化测试开源工具,支持IOS和Android平台上的移动原生应用、移动Web应用和混合应用。所谓的“移动原生应用”是指那些用IOS或者Android SDK写的应用;所谓的“移动Web应用”是指使用移动浏览器方位的应用(Appium支持IOS上的Safari和Android上的Chrome);所谓的“混合应用”是指原生代码封装网页视图(原生代码和Web内容交互)。更重要的是,Appium是一个跨平台的工具,它允许测试人员使用同样的接口、基于不同的平台(IOS、Android)编写自动化测试脚本,这样大大增加了IOS和Android测试间代码的复用性。
Appium的优点:
- 支持众多的多语言,任性选择开发语言是一件幸福的事情
- 不需要应用源码,给予测试开发工作一定的自由度
- 能跨应用进行测试,很好很强大
- 支持iOS及Android平台,面对双平台APP时,妈妈再也不用担心我用两套测试框架了,减少认知成本
- 支持Android原生及混合应用,任凭开发人员怎么折腾我都能招架的住
第三章 Appium测试环境搭建
该章参见测试环境搭建,非常的详细,在此不做赘述。
第四章 Appium实战(一) ---连接真机模拟登录
1、手机型号:Honor V8,连上数据线,打开开发者模式(每个手机不一样,有的手机需要连续点击安卓版本处才会显示出开发者模式),打开USB调试。
注:此处有坑,当打开cmd调用adb devices命令时,可能会出现列表为空的情况。网上有很多解决办法,我尝试过后都无效,但是每个手机不一样,所以请依据自身问题对应解决。
我的解决方法是:在PC端下载一个豌豆荚,如果豌豆荚可以识别手机,那么就可以操作了(我也是第一次知道豌豆荚还有这种作用,其实别的类似的软件也可以的)。当豌豆荚识别手机后,就可以卸载豌豆荚了(PC端和手机端,因为这个LM软件,在连着数据线的时候会自动在你的手机上也安装。)卸载之后,确保进程中没有豌豆荚的进程,不然会占用adb服务。然后打开cmd,输入命令adb start-server,成功启动服务后,输入命令adb devices就可以看到设备了。如下:
2、 打开appium,点击左上角的安卓图标,根据自己的实际情况配置好参数,此处我只选择了真机,如下:
3、 现在需要知道怎么定位元素,也就是知道app的每个按键的元素定位。
- 打开你安装sdk的目录,sdk/tools/uiautomatorviewer.bat,双击打开
- 点击左上角的第2个图标Device Screenshoot,会显示当前屏幕信息,切换界面后再次点击即可。如下图:
4、编写测试脚本。刚刚得到的resource_id就是需要在脚本中写入的内容,大致如下:
第五章 Appium实战 ---启动一个计算器的应用并实现加法的运算
1、进到Android SDK的目录,双击运行AVD Manager.exe
2、点击Create创建一个Android模拟器。输入一个模拟器名称,选择设备类型和API版本,点击进行创建。创建完成后会显示当前所有的设备,选择设备,点击Start启动,我创建的是android 7.0的,如下:
3、获取应用的packageName和activityName,此处可参见获取被测试apk的packageName和要启动的activityName,有一点要注意,有些模拟器的内置计算器的apk名称是ExactCalculator.apk,而不是Calculator.apk,然后就是这里的操作需要以管理员的身份运行cmd。
正确操作后得到如下的packageName和activityName。
4、Capability配置
Capability是一个字典,配置的是自动化测试的一些必要信息,包含了本次测试的平台名称及版本号、启动的是浏览器还是app等,客户端将这些告诉服务器,服务器根据这些信息创建自动化会话。
Android平台相关并且常用的几个:
- automationName:定义测试引擎,使用的android-sdk版本小于17时,使用Selendroid,大于等于17时使用Appium,默认是Appium
- platformName:测试平台,通常用于移动设备,值有:Android、IOS、FirefoxOS
- platformVersion:测试平台版本,根据设备的固件版本指定,例如Android的4.2、IOS的7.1
- deviceName:设备名称
- app:要安装的app的文件路径,可以是本地的绝对路径,也可以是远程网络路径
- browserName:启动的浏览器名称,测试的是web应用时指定,Android平台设置为Chrome
- newCommandTimeout:为了结束Appium会话,会设置一个等待从客户端发送命令的超时时间,默认为60秒,一般不需要设置
- autoLaunch:测试时是否需要自动运行app
- appPackage:设置app的包名,告诉Appium需要启动的app
- appActivity:设置启动的Activity
- appWaitActivity:要等待的Activity
- appWaitPackage:要等待的appPackage
- unicodeKeyboard:是否使用unicode键盘输入,在输入中文字符和unicode字符时设置为true
- resetKeyboard:是否将键盘重置为初始状态,设置了unicodeKeyboard时,在测试完成后,设置为true,将键盘重置
然后打开Appium,点击右上角的运行按钮,出现如下内容则说明启动成功:
解决BUG区域