Airtest入门 - 连接安卓设备及常用操作
连接安卓设备(模拟器)找到AiretestIDE右侧的设备窗(如果没有,在顶部导航栏找到: 窗口 - Devices),第一个部分就是移动设备的连接,连接安卓设备的操作如下:1,先打开本地的模拟器,然后打开模拟器的开发者模式2,点击远程设备连接的按钮3,输入设备号4,点击连接按钮5,设备就会被列出来,点击connect就好三个备选的连接参数:Use javacap: 这个选项是为了防止设备出现黑屏
连接安卓设备(模拟器)
找到AiretestIDE右侧的设备窗(如果没有,在顶部导航栏找到: 窗口 - Devices),第一个部分就是移动设备的连接,连接安卓设备的操作如下:
1,先打开本地的模拟器,然后打开模拟器的开发者模式
2,点击远程设备连接的按钮
3,输入设备号
4,点击连接按钮
5,设备就会被列出来,点击connect就好
三个备选的连接参数:
-
Use javacap: 这个选项是为了防止设备出现黑屏的情况,如果你在连接模拟器之后出现黑屏的情况,可以勾选这个选项。
-
Use ADB Orientation:如果设备连接之后,屏幕方向不对,可以尝试勾选这个选项。
-
Use ADB Touch:一般不建议勾选,只有部分无法点击屏幕的设备才需要使用。
连接成功就是下图这个样子,你可以在设备窗中看到你的模拟器。
常用操作
安装一个APK
# 安装一个APK:
'''
install(r'apk在本地的路径',install_options=["r","t","l","s","d","g"])
可选参数的含义:
r:如果设备中已经存在该APK,则替换该APK,重新
t:允许测试的APK包
l:锁定该应用程序
s:允许把APK安装到sd卡上去
d:设备上已存在一个APK,现在要安装一个版本较低的APK,此操作为覆盖安装
g:安装APK时,为APK授予它所需要的权限
'''
install(r'F:\APP\base.apk')
打开APK
start_app启动应用程序
# 打开一个APK
# start_app("apk的包名")
'''
使用adb命令查看包名
adb shell pm list packages 列出所有的包名
adb shell pm list packages -f 列出apk的所在位置
包名格式eg:com.baidu.BaiduMap
'''
start_app("com.baidu.BaiduMap")
使用touch启动应用程序
使用touch的方法:Airtest辅助窗中点击touch,然后log查看窗会提示你框选截图,比如现在要打开百度地图,只需要把百度地图的icon截一下图,然后松开鼠标,脚本里就会出现如下图所示的内容,运行脚本的时候,airtest会使用图像匹配找到百度地图,然后点击它,这样应用程序就会打开了。
sleep延迟操作
我们在启动百度地图的时候会发现,启动页有大概2-3s的时间,这个时候我们不需要点击什么,所以给它设置一个等待时间,sleep的使用场景大致就是这个样子,等待几秒执行下一个操作,比如上传一个图片,也需要设置等待时间,否则图片不能完全上传会影响后面的操作。使用方法也很简单:
sleep(3)
# 3s之后执行后续操作
text文本输入
假如我们现在需要搜索“人民广场”,我们要执行的操作就是点击搜索输入框,弹出文本输入框,输入“人民广场”,然后回车,
touch(Template(r"tpl1640591369408.png", record_pos=(-0.095, -0.781), resolution=(810, 1440)))
touch(Template(r"tpl1640591324321.png", record_pos=(-0.094, -0.773), resolution=(810, 1440)))
text("人民广场")
keyevent("{ENTER}")
注:代码复制过来,图片会被以代码的形式粘贴在这里,下图为脚本中的实际样子
keyevent键盘输入
keyevent("^a") # 全选
keyevent("^c") # 复制
keyevent("{BACKSPACE}") # 退格
keyevent("{DEL}") # 删除
keyevent("{ENTER}") # 键入
keyevent("^v") # 粘贴
keyevent("{HOME}") # home键
更多Android按键码参考: https://developer.android.com/reference/android/view/KeyEvent
滑动操作
swipe单指滑动
从海伦路下滑 滑动到蓝村路
从陆家浜路上滑 滑动到江浦公园
# 滑动操作
# 上滑
swipe(Template(r"tpl1640593232273.png", record_pos=(-0.331, 0.374), resolution=(810, 1440)), vector=[0.6013, -0.5162])
# 下滑
swipe(Template(r"tpl1640593356860.png", record_pos=(-0.327, -0.39), resolution=(810, 1440)), vector=[0.6338, 0.4979])
swipe((100,900),(300,300)) # 从坐标(100,900)滑动到(300,300)
swipe((100,900),(300,300), duration=1, steps=2) # 从坐标(100,900)滑动到(300,300),持续1s,分两步完成
pinch双指捏合滑动
# 双指捏合操作
pinch() # 两指向屏幕中间点捏合
pinch('in',center = (600,600)) # 以中心点坐标(600,600)向内捏合
sleep(3)
pinch('out',center = (600,600))# 以中心点坐标(600,600)向外捏合
pinch('out',center = (600,600),percent = 0.2) # 以中心点坐标(600,600)向外捏合,其中捏合比例为屏幕的20%
断言
如果断言失败,会报出断言失败AssertionError
的错误。
# 断言
assert_exists(Template(r"tpl1640597475387.png", record_pos=(0.088, 0.183), resolution=(810, 1440)), "找到了目标图片")
assert_not_exists(Template(r"tpl1640597559651.png", record_pos=(0.089, 0.177), resolution=(810, 1440)), "没有找到目标图片")
assert_equal(1, 1, "msg:实际值:1和预测值:1一致")
assert_not_equal("1", "2", "实际值:1和预测值:2不一致.")
wait等待
参数详解:
Template:目标元素
timeout:等待x秒之后,如果图片依旧没有出现,抛出异常
interval:每间隔x秒就查找一次图片
intervalfunc:每次找不到这个图片就会执行该函数
# 等待
def NotFound():
print("元素没有找到")
wait(Template(r"tpl1640596080020.png", record_pos=(0.127, -0.062), resolution=(810, 1440)),timeout = 10,interval = 3,intervalfunc = NotFound)
鼠标的单击,双击,左击,右击
# 点击操作
touch(600.600) # 点击指定坐标
touch(Template(r"tpl1640597122385.png", record_pos=(0.093, 0.177), resolution=(810, 1440))) # 点击指定图片
touch((600,300),duration = 2) # 点击持续2秒
touch((600,300),time = 2) # 点击两次
touch(Template(r"tpl1640596975627.png", record_pos=(0.091, 0.146), resolution=(810, 1440)),target_pos = 5) # 点击目标图片的中心点
touch((600,300),right_click = true) # 右击
double_click(600,600) # 双击
更多推荐
所有评论(0)