连接安卓设备(模拟器)

找到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) # 双击
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐