Airtest简介
Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。基于图形化识别的Airtest Project解决方案,十分有效地降低了自动化测试的门槛,真正使自动化测试带来测试效率的提升。Google表示Airtest 是安卓游戏最强大、最全面的自动测试方案之一。
Airtest的使用,官方文档有详细说明,详见:
http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html
Airtest API文档,如下:
https://airtest.readthedocs.io/en/latest/
以下列出将Airtest API文档翻译了一些常用的操作,希望能帮助到大家:
Poco
Poco是一款基于UI控件搜索的自动化框架,与基于图像识别的Airtest不同的是,Poco可以使用类似 poco(“OK”).click() 的方式来获取并操作节点
Poco的常规使用案例:
poco = Poco() 初始化
点击
poco(‘btn_start’).click()
poco(text=‘basic’).click().click()
poco(‘btn_back’, type=‘Button’).click()
poco(‘star_single’).long_click()
poco(‘star_single’).long_click(duration=5)
对象存在判断
invisible_obj = poco(‘result_panel’, type=‘Layer’)
print(invisible_obj.exists()) # => False. This UI is not visible to user.
拖动和滑动(drag/swipe)
poco(‘star’).drag_to(poco(‘shell’))
poco(‘Scroll View’).swipe([0, -0.1])
poco(‘Scroll View’).swipe(‘up’) # the same as above, also have down/left/right
x, y = poco(‘Scroll View’).get_position()
end = [x, y - 0.1]
dir = [0, -0.1]
poco.swipe([x, y], end) # drag from point A to point B
poco.swipe([x, y], direction=dir) # drag from point A toward given direction and length
等待UI
start_btn = poco(‘start’)
start_btn.click()
start_btn.wait_for_disappearance()
exit_btn = poco(‘exit’)
exit_btn.wait_for_appearance()
//展示轮询UI时等待 任意一个 UI出现就往下走
blue_fish = poco(‘fish_emitter’).child(‘blue’)
yellow_fish = poco(‘fish_emitter’).child(‘yellow’)
bomb = poco(‘fish_emitter’).child(‘bomb’)
fish = poco.wait_for_any([blue_fish, yellow_fish, bomb])
//展示轮询UI时等待 所有 UI出现才往下走
blue_fish = poco(‘fish_area’).child(‘blue’)
yellow_fish = poco(‘fish_area’).child(‘yellow’)
shark = poco(‘fish_area’).child(‘black’)
poco.wait_for_all([blue_fish, yellow_fish, shark])
Airtest
airtest.core.api(此模块包含airtest核心API)
init_device(platform=‘Android’, uuid=None, **kwargs)
如果还没有初始化设备,将其设置为当前设备。
参数:
platform–Android、iOS或Windows
uuid–目标设备的uuid,例如Android的serialno、Windows的handle、iOS的uuid
kwargs–可选的平台特定关键字args,例如cap_method=javacap for android
返回:设备实例
connect_device(uri)
用uri初始化设备,并设置为当前设备
参数:
URI–连接到设备的URI,例如android://adbhost:adbport/serialno?参数=值&参数2=值2
返回:设备实例
例子:
android:///使用默认参数的本地ADB设备
android://adbhost:adbport/1234566?cap_method=javacap&touch_method=adb使用自定义参数的远程设备
Windows://本地Windows应用程序
iOS://iOS设备
device()
返回当前活动设备。
返回:当前设备实例
set_current(idx)
设置当前活动设备。
参数:idx–uuid或初始化设备实例的索引
IndexError–在找不到设备IDX时引发
返回:无
平台:Android、iOS、Windows
auto_setup(basedir=None, devices=None, logdir=None, project_root=None)
自动设置运行环境并尝试连接Android设备(如果未连接设备)。
参数:
basedir–脚本的basedir,也可以接受文件。
devices–连接列表中的设备URI。
logdir–log dir用于脚本报告,默认值为none用于无日志,设置为true用于/log。
project_root–使用api的工程根目录
shell(*args, **kwargs)
在目标设备中启动远程shell并执行命令
参数:cmd–要在设备上运行的命令,例如“ls/data/local/tmp”
返回:shell命令的输出
平台:Android
start_app(*args, **kwargs)
在设备上启动目标应用程序
参数:package–要启动的包的名称,例如“com.netease.my”
活动–要开始的活动,默认为无,这意味着主活动
返回:无
平台:安卓,iOS
stop_app(*args, **kwargs)
停止设备上的目标应用程序
参数:package–要停止的包的名称,另请参见start_app
返回:无
平台:Android、iOS
clear_app(*args, **kwargs)
清除设备上目标应用程序的数据
参数:package–包的名称,另请参见start_app
返回:无
平台:Android、iOS
install(*args, **kwargs)
在设备上安装应用程序
参数:file path–目标设备上要安装的文件的路径
kwargs–平台特定关键字标识,请参阅相应的文档
返回:无
平台:
安卓,iOS
uninstall(*args, **kwargs)
在设备上卸载应用程序
参数:package–包的名称,另请参见start_app
返回:无
平台:Android、iOS
snapshot(*args, **kwargs)
获取目标设备的屏幕截图并将其保存到文件中。
参数:filename –保存屏幕截图的文件名。如果提供了相对路径,则默认位置为ST.LOG_DIR,
msg–屏幕截图的简短描述,将记录在报告中
返回:截图的绝对路径
平台:Android、iOS和Windows
wake(*args, **kwargs)
唤醒并解锁目标设备
返回:无
平台:Android、iOS
home(*args, **kwargs)
返回目标设备的主屏幕。
返回:无
平台:Android、iOS
touch(*args, **kwargs)
在设备屏幕上执行触摸操作
参数:V–要触摸的目标,模板实例(图片)或绝对坐标(x,y)
times -点击次数,默认1
kwargs –平台关键标识,请参阅相应的文档
返回:要点击的最终位置
平台:Android、Windows和iOS
click(*args, **kwargs)
在设备屏幕上执行触摸操作
参数:V–要触摸的目标,模板实例(图片)或绝对坐标(x,y)
times -点击次数,默认1
kwargs –平台关键标识,请参阅相应的文档
返回:要点击的最终位置
平台:Android、Windows和iOS
double_click(*args, **kwargs)
swipe(*args, **kwargs)
在设备屏幕上执行滑动操作。
有两种分配参数的方法
swipe(v1, v2=Template(…)) # swipe from v1 to v2
swipe(v1, vector=(x, y)) #从v1开始滑动,沿矢量移动。
参数:
v1–滑动的起点,模板实例(图片)或绝对坐标(x,y)
V2–滑动的终点,模板实例(图片)或绝对坐标(x,y)
vector -滑动动作的矢量坐标,(x,y)录制时自动生成,无论是绝对坐标(x,y)还是屏幕百分比,例如(0.5,0.5)
**kwargs-平台关键标识,请参阅相应的文档
Exception –当提供的参数不足以执行交换操作时出现一般异常
返回:原点和目标位置
平台:Android、Windows和iOS
pinch(*args, **kwargs)
在设备屏幕上执行夹操作
参数:
in_or_out–收缩或收放,枚举值[“In”,“Out”]
center–夹点操作的中心,默认为无,即屏幕的中心。
percent –夹点操作屏幕的百分比,默认为0.5
返回:无
平台:Android
keyevent(*args, **kwargs)
在设备上执行键事件
参数:keyname –平台特定的键名
**kwargs-平台关键标识,请参阅相应的文档
返回:无
平台:Android、Windows和iOS
text(*args, **kwargs)
在目标设备上输入文本。文本输入框必须首先处于活动状态。
参数:
text –输入文本,支持Unicode
enter –在文本输入后输入Enter 键事件,默认为true
返回:无
平台:Android、Windows和iOS
sleep(*args, **kwargs)
设置睡眠时间,它将被记录在报告中
参数:secs -设置秒数
返回:无
平台:Android、Windows、iOS
wait(*args, **kwargs)
等待匹配设备屏幕上的模板
参数:v–要等待的目标对象,模板实例(图片)
timeout –等待匹配的时间间隔,默认为无,即st.find_timeout
interval –尝试查找匹配项的时间间隔(秒)
intervalfunc –在每次尝试查找对应的匹配失败后调用的func
TargetNotFoundError–在时间限制过期后找不到目标时引发
返回:匹配目标坐标
平台:Android、Windows和iOS
exists(*args, **kwargs)
检查设备屏幕上是否存在给定目标
参数:V——待检目标
返回:如果未找到目标,则返回false,否则返回目标的坐标。
平台:Android、Windows、iOS
find_all(*args, **kwargs)
在设备屏幕上查找目标的所有匹配项并返回它们的坐标
参数:v–要查找的目标
返回:坐标列表,[(x,y),(x1,y1),…]
平台:Android、Windows、iOS
assert_exists(*args, **kwargs)
判断目标存在于设备屏幕上
参数:V–检查目标
msg–断言的简短描述,将记录在报告中
AssertionError -如果断言失败抛出异常
返回:目标坐标
平台:Android、Windows和iOS
assert_not_exists(*args, **kwargs)
判断目标不存在于设备屏幕上
参数:V–检查目标
msg–断言的简短描述,将记录在报告中
AssertionError -如果断言失败抛出异常
返回:无
平台:Android、Windows和iOS
assert_equal(*args, **kwargs)
判断两个值相等
参数:
first -第一个值
Second-第二个值
msg–断言的简短描述,将记录在报告中
AssertionError -如果断言失败抛出异常
返回:无
平台:Android、Windows和iOS
assert_not_equal(*args, **kwargs)
判断两个值不相等
参数:
first -第一个值
Second-第二个值
msg–断言的简短描述,将记录在报告中
AssertionError -如果断言失败抛出异常
返回:无
平台:Android、Windows和iOS
airtest.core.android.adb
通过adb命令获取device 的信息,如get_memory(),get_storage(),get_cpuinfo()等
airtest.core.android.android
start_app(package, activity=None)
snapshot(filename=None, ensure_orientation=True)
home()
text(text, enter=True, **kwargs)
touch(pos, duration=0.01)
get_top_activity()
本文介绍了Airtest,一款由网易推出的基于图像识别和Poco控件识别的UI自动化测试工具,旨在降低自动化测试门槛。文章还详细讲解了Poco框架,通过实例展示了如何进行点击、对象判断、拖动等操作。此外,还概述了Airtest的核心API,包括设备连接、应用操作、屏幕截图等功能。

4639

被折叠的 条评论
为什么被折叠?



