更多文章,敬请关注微信公众号(robotframework666)
一、准备工作:
1 appium服务器启动,记录好启动的服务器路径与端口
(官网下载安装启动就可以,出现如下图所示,基本就是没问题的)
2 手机准备好,待测手机的安卓版本要查看并记录
platformName=Android
platformVersion=10
这俩参数要拿到,后面是需要用到的
3 准备好待测APP,拿到APP的包名,拿到启用的activity,拿到包名的方式有哪些?
appPackage=com.xxxxx.letalk
appActivity=com.xxxxx.letalk.ui.activity.login.UserGuideActivity
这俩参数也要拿到,后面也要用到的
下面介绍下几种常用的获取包名与MainActivity的方法:
1 )打开xxx.apk 安装包中的 AndroidManifest.xml的文件,可以找到很多activity
2) 可以通过aapt dump badging xxx.apk的方式
直接显示的话用命令:
aapt dump badging xxx.apk | grep package
aapt dump badging xxx.apk | grep launchable-activity
进入到sdk目录下,build-tools目录下,如图:
3) db shell dumpsys window | grep mCurrentFocus 也是可以获取的
4 如何定位APP的元素
方式有很多,我们采用最为流行的方式,用sdk目录下,tools目录下的uiautomatorvierer.bat工具
比如我们就拿到了【登录】按钮的各种元素定位信息
另外就是还可以使用appium自带的inspect来进行:
启动的时候参数如下:
{
"remote_url": "http://localhost:4723/wd/hub",
#其实这个就是我们启动的本地appium服务地址
"platformVersion": "10",
#安卓手机的安卓系统版本号
"deviceName": "192.168.25.175:7461",
# 手机的名称,一般用adb devices可以获取,我这里是通过STF远程真机控制的手机
"udid": "192.168.25.175:7461",
# 这个参数与deviceName保持一致即可
"appPackage": "com.xxxx.letalk",
# 这个就是待测包名
"appActivity": "com.xxxx.letalk.ui.activity.login.UserGuideActivity",
"platformName": "Android"
# 安卓测试
}
上面几个参数很熟悉吧,就是我们前面步骤获取的参数
启动后可以看到,通过这种方式也是可以获取到定位信息的
二 、开始编码
1、新建项目、测试套件、测试用例
2、启动xxxAPP
3、参数化启动xxxAPP的方法,并封装成一个公共方法
4、编写登录xxxAPP的脚本
5、参数化改造登录xxxAPP的方法,并封装成一个公共方法
(下图封装登录方法,把启动app也一并写入了)
(下图为调用封装好的login方法,传入不同参数来进行测试)
login
[Arguments] ${count_username}
AppiumLibrary.Open Application remote_url=http://localhost:4723/wd/hub platformName=Android platformVersion=10 deviceName=192.168.25.175:7565 udid=192.168.25.175:7565 appPackage=com.strong.letalk appActivity=com.strong.letalk.ui.activity.login.UserGuideActivity
sleep 3
Click Element //android.widget.TextView[@resource-id=\"com.strong.letalk:id/letalk_usercenter_tv_confirm\"]
Wait Until Page Contains Element //android.widget.EditText[@resource-id=\"com.strong.letalk:id/letalk_usercenter_et_content\" and @text=\"请输入手机号或乐号\"] timeout=15 error=not found
Input Text ${locator_username} ${count_username}
Input Text //android.widget.EditText[@resource-id=\"com.strong.letalk:id/letalk_usercenter_et_content\" and @text=\"请输入密码\"] cwx123789
Click Element //android.widget.ImageView[@resource-id=\"com.strong.letalk:id/letalk_usercenter_iv_privacy\"]
Click Element //android.widget.TextView[@resource-id=\"com.strong.letalk:id/letalk_usercenter_tv_operation\"]
这一个案例就可以让大家了解如何用rf来编写appium代码了,目的达到了
下面其实是在测试过程中的一些辅助方式,不做重点介绍。
三、使用录制屏幕的方法
AutoRecorder mode=suite,test
关于这个库的用法,可以先自行百度哟,不过后期也会做专项讲解的
这种内容并不影响我们自动化的设计
四、使用sikuli库要注意的事情
(sikuli用于图像识别来进行测试,之后会讲解)
解决产生垃圾文件的方法,sikuli.py改成new就可以
启动与关闭的使用
五、APP自动化必不可少的辅助操作方法:如何自定义定位方法?
相对坐标click方法如何设计
图像识别的目标匹配+返回坐标+CLICK 方法如何设计
总结下:
就是让大家了解下,如何用RF于Appium来进行一次安卓移动端的自动化测试