
-
1.脚本初始化接口 -
2.设备连接与使用相关的接口 -
3.操作应用相关的接口 -
4.常用的模拟操作
脚本初始化接口
1).air脚本:auto_setup()
auto_setup(basedir=None, devices=None, logdir=None, project_root=None, compress=None)
.air
脚本时,会自动插入这个脚本初始化接口:

auto_setup
接口表示,当前脚本所在路径为变量
__file__
,并且尝试连接第一台安卓设备。(不填入设备参数的情况下,都是尝试连接第一台安卓设备)。
auto_setup(__file__, devices=["android://127.0.0.1:5037/emulator-5554?cap_method=JAVACAP&&ori_method=MINICAPORI&&touch_method=MINITOUCH"], logdir=True, project_root=r"D\test", compress=90)
2).py脚本:cli_setup()
.py
脚本时,会自动在脚本中插入如下的初始化接口:

python xx.py
来运行本文件,且不带任何命令行参数时,则
if not cli_setup()
的判断成立,自动使用
auto_setup
这个接口来对运行环境进行初始化。这样只需要在写
.py
脚本时,在
auto_setup()
里填写好指定的参数就能直接用
python xx.py
指令来运行脚本了。
airtest run xx.air –-devices Android:///
命令行运行方式也不受影响,只要脚本检测到传入了命令行参数(即代码中的
if not cli_setup()
判断不成立,不走到里面的
auto_setup()
初始化去),就依然优先使用命令行参数来初始化脚本运行环境的相关配置项。
设备连接与使用相关的接口
1)连接设备:connect_device(URI)
# 连接安卓设备
connect_device("Android://127.0.0.1:5037/SJE5T17B17")
# 连接iOS设备
connect_device("iOS:///127.0.0.1:8100")
# 连接Windows窗口
connect_device("Windows:///123456")
# 连接模拟器
connect_device("Android://127.0.0.1:5037/127.0.0.1:62001?cap_method=JAVACAP&&ori_method=ADBORI")
2)连接设备:init_device()
init_device(platform='Android', uuid=None, **kwargs)
# 连接安卓设备
init_device(platform="Android",uuid="SJE5T17B17","cap_method=JAVACAP")
# 连接Windows窗口
init_device(platform="Windows",uuid="123456")
3)获取当前设备:device()
dev = device()
dev.swipe_along([[959, 418],[1157, 564],[1044, 824],[751, 638],[945, 415]])
4)设置当前设备:set_current()
# 第一种:传入数字0、1、2等,切换当前操作的手机到Airtest连接的第1台、第2台手机
set_current(0)
set_current(1)
# 第二种:切换当前操作的手机到序列号为serialno1、serialno2的手机
set_current("serialno1")
set_current("serialno2")
操作应用相关的接口
1)启动应用:start_app()
start_app("com.netease.cloudmusic")
2)终止应用运行:stop_app()
stop_app("com.netease.cloudmusic")
3)清除应用数据:clear_app()
clear_app("com.netease.cloudmusic")
4)安装应用:install()
install(r"D:\demo\tutorial-blackjack-release-signed.apk")
5)卸载应用:uninstall()
uninstall("com.netease.cloudmusic")
常用的模拟操作
1)截图:snapshot()
snapshot(filename="123.jpg",msg="首页截图",quality=90,max_size=800)
2)点击:touch()
# 传入绝对坐标作为点击位置
touch([100,100])
# 传入Template图片实例,点击截图中心位置
touch(Template(r"tpl1606730579419.png", target_pos=5, record_pos=(-0.119, -0.042), resolution=(1080, 1920)))
# 点击2次
touch([100,100],times=2)
# Android和Windows平台下,可以设置点击时长
touch([100,100],duration=2)

touch
接口的教程详情,推荐阅读推文
学会这些,你想怎么touch就怎么touch
3)滑动:swipe()
# 传入绝对坐标作为滑动的起点和终点
swipe([378, 1460],[408, 892])
# 传入图像作为起点,沿着某个方向滑动
swipe(Template(r"tpl1606814865574.png", record_pos=(-0.322, 0.412), resolution=(1080, 1920)), vector=[-0.0316, -0.3311])
# 常见的还可以设置滑动的持续时长
swipe([378, 1460],[408, 892],duration=1)

swipe
接口的教程详情,推荐阅读推文
你的swipe接口用不好,是因为...
4)输入:text()
touch(文本框的Template实例)
text("输入的文本")
# 默认情况下,text是带回车的,不需要可以传入False
text("123",enter=False)
# 安卓平台下,还支持输入后点击软键盘的搜索按钮
text("123",enter=False,search=True)
text
接口的教程详情,推荐阅读推文
手把手教你学会文本输入的text()接口
5)等待时间:sleep()
touch([100,100])
sleep(3.0)
touch([200,200])
6)等待截图出现:wait()
Template
图片,常用于等待某一张图片出来之后,再进行下一步操作,可以传入等待的超时时长、查找的时间间隔和首次尝试查找失败的回调函数,示例:
def test():
print("未等待到目标")
wait(Template(r"tpl1606821804906.png", record_pos=(-0.036, -0.189), resolution=(1080, 1920)),timeout=120,interval=3,intervalfunc=test())

7)检查存在:exists()
if exists(Template(r"tpl1606822430589.png", record_pos=(-0.006, 0.069), resolution=(1080, 1920)))
touch(Template(r"tpl1606822430589.png", record_pos=(-0.006, 0.073), resolution=(1080, 1920)))

8)查找目标:find_all()
a= find_all(Template(r"tpl1606822767366.png", record_pos=(-0.034, -0.184), resolution=(1080, 1920)))
print("************************")
print(str(a))

9)按键事件:keyevent()
# Android平台下
keyevent("HOME")
keyevent("BACK")
keyevent("KEYCODE_DEL")
# Windows平台下
keyevent("{DEL}")
# iOS平台下只支持HOME
keyevent("HOME")
10)唤醒屏幕:wake()
wake()
11)返回HOME:home()
home()

本文分享自微信公众号 - AirtestProject(AirtestProject)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。