Airtest是一个 基于图像识别 的无侵入式测试框架。
Airtest测试框架提供了大量的测试API,我们可以在测试脚本中灵活使用这些方法实现测试功能。
Airtest中的常用API包括设备连接/管理
、设备操作、AirtestIDE中提供了Airtest录制辅助窗,可以快速生成Airtest常用语句。本章节主要讲述如何使用AirtestIDE快速生成Airtest脚本。
在AirtestIDE的Airtest录制辅助窗内,包含有三种类型的录制按钮:
touch点击/常按操作
wait等待某个元素出现
swipe滑动屏幕
exists找到图片坐标
test 输入文本
keyevent 按键操作(如:输入HOME就是返回桌面)
snapshot 截图
sleep睡眠
assert_exists断言图片出现的位置
assert_not_exists断言与assert_exists相反
assert_equal断言两个条件是否相等
assert_not_equal断言两个条件是否不相等
这里以小米商城为例 演示
测试流程为:
1 打开APP
2在首页输入耳机搜索
3 点击一个商品查看详情
4 点击收藏
连接上自己的手机打开USB调试后 手机就能投射到IDE上进行脚本录制了
使用touch将APP图标框起来 就能获取坐标点点击启动APP了
点击启动APP后 会有几秒中加载的时间才能到达首页 所以用wait 来判断等待某个元素出现后再执行下来的代码
我以首页的商城早报为参考元素 点击wait把商城早报框起来 这样app后 代码会一直等待 直到商城早报出现后再执行
touch点击首页搜索框
如果这个搜索功能是跳到另一个页面搜索的 所以 必须要再第二页再点一下确认光标 这个APP就不需要这么做了
到达搜索页面后使用text输入耳机
然后用touch点击搜索
在列表中点击商品查看详情
点击收藏
使用airtest录制的基本流程就算录制完毕了
如果想单独调试一行代码是否可行 可以单机右击只允许选中的代码
使用Poco辅助窗进行录制
poco定位相比airtest的图像定位要更加准确一些
在辅助窗上选择andriod
POCO辅助窗使用的层级定位 找到poco窗对应的APP定位位置 就能对应用做出响应的操作
比如我要打开APP 。双击对应的定位元素 这个元素就会自动的出现在脚本编辑窗内 我只需要在后面加上操作的动作 比如click点击
打开后在首页进行滑动操作 依然用swipe方法
仔细阅读一下swipe的参数 用法
v1:滑动的起始位置
v2 :滑动的终点位置
vector: 滑动的方向
steps:滑动的点
duration:滑动的时长
获取手机的屏幕坐标可以手机开发者模式中打开指针位置 这样就可以现在坐标了
使用swipe在首页进行向下滑动操作 到小米秒杀的位置
在列表中使用poco层级定位 去找到这个路由器对应层级位置
双击视图树对应的商品元素位置 ,这个表达式就会写到脚本编辑窗中 然后在后面加上对应的操作 如点击操作就是click()
来到商品详情页面 点击立即抢购 利用视图树定位立即抢购的按钮位置 后 双击对应的定位元素
双击后 脚本编辑窗 出现对应的代码 在末尾追加click() 点击操作
poco("android:id/content").child("android:id/primary").child("android:id/primary").offspring("com.xiaomi.shop.plugin.instantpurchase:id/flash_viewpager").offspring("com.xiaomi.shop.plugin.instantpurchase:id/flash_list").child("android.widget.LinearLayout")[2].child("android.widget.LinearLayout").offspring("com.xiaomi.shop.plugin.instantpurchase:id/flash_product_image").click()
相同的操作选择规格 进行位置坐标的定位后 进行点击操作