前提条件:
在进行手机自动化测试之前,一定要搭建好appium环境,具体步骤可回看上一篇APP自动化安装篇:appium环境搭建
一、连接设备
将手机连接好电脑后,一定要打开手机的开发者选项和USB调试
打开电脑的管理员cmd,这里可能和电脑有关系,我试过使用普通cmd运行adb命令会提示:'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。但其他电脑用普通cmd也能正常使用adb命令。
在管理员cmd中执行命令adb devices,可以查看当前有哪些设备连接了电脑,这里我连接电脑的手机已经识别出来了。如果觉得没把握,可以拔掉手机执行adb devices,这时连接列表一定是空的,然后再插上手机执行adb devices,那么识别出来的设备就一定是你的手机了
如果连接手机后没有识别出来,或者之后要用IP地址的连接方式也可以手动连接。
1、保证手机的IP和电脑的IP要在同一个网段内,简单地说就是手机电脑都用一个WiFi
2、要开启5555端口,执行命令adb tcpip 5555
3、通过手机的IP连接,执行命令adb connect *.*.*.*
执行完以上三步后,再用adb devices查看就能看到以IP连接的设备了。图中由于我已经开过5555端口,所以我这里提示重启5555,如果是第一次开放不会有任何提示
二、准备测试脚本
连接好了手机自然要开始试试是不是可以自动化运行了,但首先我们要写一个最简单的脚本用到最基础的关键词Open Application,先来说说这个关键词的语法
http://localhost:4723/wd/hub:Appium所在路径(由于appium搭建在本机,所以url格式固定不变)
platformName:平台名称,Android或者ios
platformVersion:平台版本,也就是Android的版本号
deviceName:设备名称,即连接的手机(或模拟器)的名称
appPackage:app的包名
appActivity:app的activity名字
unicodeKeyboard、resetKeyboard:两个和键盘相关的参数,如果要使用键盘且要使用中文,两个参数都设为true;如果不用键盘,不要这两个参数也行
前面的几个值中重点讲下deviceName、appPackage、appActivity如何填写
deviceName就是我们用adb devices看到的已连接的设备,可以直接使用47b6f095,也可以使用192.168.137.105:5555,效果是一样的
appPackage、appActivity就需要通过命令获取了,前提条件一定要在手机中打开要测试的应用才能获取
1、如果设备连接表中只有一个设备,执行
>> adb shell
>> dumpsys activity | grep mFocusedActivity
2、如果设备连接表中像我现在有两个设备,执行
>> adb -s devicesID shell
>> dumpsys activity | grep mFocusedActivity
获取到的值/前面的是appPackage,/后面的是appActivity,执行exit命令退出shell
三、测试
经过前面的两步,终于可以运行自动化了,但在开始之前还有几点要完成
1、打开Appium软件,并运行
2、手机端安装控制软件,这个不用自己去安装,Appium运行起来后,我们把RF的脚本跑起来,手机会自动要求安装两个软件AppiumSettings、Unlock,直接安装即可
再次运行脚本,APP自动化终于可以跑起来了!!!
四、踩过的坑
在第三步测试阶段遇到两个问题
问题一:每次运行脚本就不停的要求安装AppiumSettings、Unlock导致自动化没法继续
解决办法:
由于我的Appium版本很老是1.4的,找不到网上解决办法中的文件(网上都是基于Appium1.6或以上的),最终通过修改...\Appium\node_modules\appium\lib\devices\android\android.js这个文件,将大概112、113、114、117这四行注释掉(以内容为准),再重启Appium后问题解决,不再要求安装这两个文件
问题二:RF报错:Keyword 'Capture Page Screenshot' could not be run on failure: No application is open
解决办法:
修改...\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js文件,大概在位置1139行左右(以上下文内容为准),添加代码:outlines.shift()