AirtestIDE功能
- 基础功能
- 一、设备窗
- 二、Airtest辅助窗
- 三、Poco辅助窗
- 3.1UI树常见问题:
- 3.1.1为什么我选择了Poco模式后,没有成功刷出UI树
- 3.1.2为什么接入了SDK、使用了原生App依然看不到UI树
- 3.1.3UI树在一段时间后没有正确刷新
- 四、脚本编辑窗
- 五、Log查看窗
- 六、文件菜单-对应工具栏的前4个按钮:新建、打开、保存、另存为
- 6.1新建
- 6.1打开
- 6.2保存
- 6.3另存为
- 七、运行菜单-对应工具栏后3个按钮:运行、停止运行、打开HTML报告
- 7.1运行
- 7.2停止运行
- 7.3打开HTML报告
- 7.4Firebase菜单
- 八、窗口菜单
- 九、选项-设置
- 十、Device栏
- 10.1实时坐标显示:可以实时在手机屏幕画面上显示出鼠标位置的坐标(绝对坐标),方便大家获取坐标。此时点击鼠标右键 ,还可以自动将当前坐标信息复制到剪贴板中,在代码里只需要直接粘贴即可插入点击位置的坐标。
- 10.2相对坐标:该选项依赖于“实时坐标显示”,勾选后,将会以(0, 0) 到 (1, 1) 为范围显示出相对坐标。使用相对坐标可以避免跨分辨率的操作点超出屏幕的问题,使坐标操作兼容性更好。
- 10.3Windows窗口无嵌入连接:由于部分windows应用在默认嵌入方案中可能会有无法嵌入、嵌入后无法对应用进行操作、黑屏等问题,因此我们提供了一种备用嵌入方案。
- 10.4手机设备显示分辨率:当已经连接好Android手机时,AirtestIDE会在Device窗口显示出手机实时同步画面。如果觉得清晰度较低,可以修改该值,数字越大,清晰度越高。默认为800,取值范围为300-2000之间。
- 十一、Editor栏
- 11.1兼容模式:有些少部分用户由于显卡兼容性问题,可能在启动AirtestIDE时,不能看到脚本编辑窗口和log窗口中的文字,或者是启动后会闪退,但是通过双击文件夹中的兼容性模式启动.bat脚本能够正常启动AirtestIDE。
- 11.2字体大小:可以调节编辑窗口和Log窗口内的文字大小,默认是14px。在AirtestIDE中,还可以通过按住ctrl+鼠标滚轮来实现改变文字大小。
- 11.3编辑器主题:我觉得默认的主题就挺好。
- 11.4自动补全:打开此选项后,可以在AirtestIDE中编辑代码时,享受到airtest和poco库的代码自动补全提示。但我的机器打开后会卡。
- 十二、Airtest栏
- 12.1自定义launcher文件路径:这个是airtest的高级功能:启动器(后期会有专门文章介绍)。新手不要改这个。
- 12.2默认log存放路径:用于指定在AirtestIDE中运行脚本时的log目录,IDE将会把产生的log文件、截图数据默认放置在这个目录下。
- 12.3自定义Python.exe路径:不了解Python环境的话不要修改。AirtestIDE允许使用本地的python.exe来跑在AirtestIDE里写好的脚本。由于AirtestIDE内置了一个python环境,假如你希望能够使用自己的本地python环境(可以跑一些本地安装了的第三方库,可以让你使用本地的python2环境等等),可以通过设置这个选项来改变运行脚本默认使用的python.exe。
- 十三、Poco栏
- 13.1刷新间隔:上期讲的Poco检视器,会定时去拉取手机上最新的元素树,在这里可以设定间隔时间。
- 13.2Windows窗口区域位置:在嵌入了Windows游戏窗口后,如果想要使用Poco来查看界面元素,可以点该项后面的按钮来设置窗口位置,这是为了能够在Windows窗口上显示poco元素标记用的,不设置不会对脚本运行产生任何影响。
- 13.3采用渲染分辨率:在一些不支持全面屏手机的app,画面不能充满整个屏幕的时候,出现黑边,poco定位发生偏移。如下图高亮与实际按钮相差一些:
- 十四、Selenium栏
- AirtestIDE高级功能
- 一、图片编辑器
- Snapshot+Recognition
- filename
- threshold
- target_pos
- rgb
- 右键菜单
- 二、手机助手
- 安装apk
- App列表
- Common Features
- Current App
- Remote Debug
基础功能
Airtest辅助窗(左上):这里主要是用来生成airtest框架中的代码的。
Poco辅助窗(左下):这个主要是用来抓取元素信息的,类似于Chrome F12查看Web元素、Appium Inspector查看App元素,并且可以生成Poco框架代码。
脚本编辑窗(中上):用来编写自动化代码,和所有IDE的相关功能类似。
Log查看窗(中下):代码不运行的时候用来显示Poco辅助窗选定元素后的所有信息;代码运行后显示程序运行时代码。
设备窗(右侧):连接设备,如已连接则同步显示设备画面。
一、设备窗
安卓:
插入手机后,设备列表会自动刷新,显示PC上的设备。点最右侧的箭头,可以选择连接参数(后面文章会详细介绍)。
如果设备列表没有自动刷新,可以点‘刷新ADB’手动刷新。
如果ADB卡死等情况,可以点‘重启ADB’,对应adb命令adb kill-server + adb start-server
如果手机是插在服务器上,不在本机,可以通过‘远程设备连接’(后面文章会详细介绍)
Windows&iOS
同样的,如果是Windows上的应用或苹果手机,则可分别在下面连接(后面文章会详细介绍)
看一下连接设备以后的样子,会实时显示手机屏幕,并且可以点击、滑动操作。
最下面依次是:菜单键、Home键、返回键、电源键
最上面的工具图标,点击可弹出设备窗菜单:
控件面板:点击会切换显示设备列表,我们可以继续连接第2台手机,airtest是可以同时连接并操作多台手机的。切到设备列表后,再点工具按钮,可以切回手机投屏显示。
断开当前设备:点击后会断开与该设备的连接。
显示Android助手:点击打开助手,里面是一些常用adb命令的界面化操作(后面文章会详细介绍)
二、Airtest辅助窗
touch:图片识别点击操作,鼠标指向touch按钮后会提示具体的使用方法。使用方法:点击‘touch’按钮,在手机屏幕上拖动选取点击的图片,在代码编辑窗会自动生成代码。
wait:等待图片出现。同touch一样,在屏幕上选择图片。
swipe:滑动操作。使用方法:点击‘swipe’按钮,在手机屏幕上拖动选取要识别的图片,选择完后,在向要滑动的地方点击一下。
swipe代码执行时会找到Git图片,向下滑动。
exists:判断图片是否存在,返回True或False。使用方法同touch。
text:输入文字。
keyevent:模拟按键,如HOME键,返回键,菜单键
snapshot:截图
sleep:等待
assert_exists:断言图片存在。使用方法同touch。
assert_not_exists:断言图片不存在。使用方法同touch。
assert_equal:断言相等
assert_not_equal:断言不相等
图片模板生成:点击有小剪刀的按钮,再去拖选图片,就可以生成一个图片模板对象,就是touch语句中嵌套使用的那个图片模板对象。
录制:点击后,去投屏上操作,可实时生成airtest代码。不推荐使用,自动生成截取的图片不好用。
三、Poco辅助窗
我们以Unity游戏App为例,在下拉框中选择Unity。
App下载地址:
http://top.gdl.netease.com/poco-res/poco-demo-unity-game-android.zip
此时脚本编辑区会提示是否插入Poco初始化代码,我们点Yes。
选模式后,airtestIDE会拉取元素树(每过几秒都会拉取最新元素),我们单击某个元素,Log查看窗会显示该元素详细信息,投屏会高亮所选元素。
模式下拉框下面的搜索框,可以按元素name过滤。
双击元素或右击元素选择‘UI path-code’,会自动生成元素对象代码。
模式下拉框右侧依次是冻结按钮、检视按钮、录制按钮:
冻结:点击后,投屏会冻结,元素树也不再更新。因为游戏很多都是动画的,定住当前画面以方便查看当下元素信息。
检视:点击后,鼠标可在投屏实时查看元素信息
此时在投屏上右击,可以列出当前点上的所有元素。很多时候元素是叠加在一起的,无法选择,就可以通过此方法选取。
在投屏上右击,也可快速切换普通/检视/录制功能。
3.1UI树常见问题:
3.1.1为什么我选择了Poco模式后,没有成功刷出UI树
目前除了Android原生App无需接入SDK即可直接使用之外,其余引擎都需要事先 接入SDK 才能获取到UI结构信息(游戏没有事先接入SDK是无法直接看到UI树的)
3.1.2为什么接入了SDK、使用了原生App依然看不到UI树
在Poco初始化时,会向手机中安装相关的apk,请务必保证手机允许了相关apk的安装。部分型号的手机需要在设置中开启“允许通过ADB安装应用”等相应选项才能进行安装。
部分厂商的手机需要额外的设置,例如需要手工在输入法选项中,将Yosemite输入法设置为默认,详情请参考:
https://airtest.doc.io.netease.com/IDEdocs/device_connection/2_android_faq/#id7
3.1.3UI树在一段时间后没有正确刷新
可以尝试先将Poco模式选项的下拉菜单改为 Stop,再重新选择你所需要的模式,例如 Android, IDE将重新建立与手机的Poco通信连接。
有时候也可能因为手机内存不足,手机自动将后台的pocoservice进程关闭了,导致连接断开,这种情况建议尝试换一台配置更好的手机重试。
四、脚本编辑窗
在这里编写代码,没啥好说的。说下右击后的菜单:
撤销、重复、复制、粘贴没啥好说的。
只运行选中代码:一个脚本假如你写了100行,运行时因为第90行代码写错了,运行失败。你修改第90行后,如果从头开始运行,太浪费时间,此时你可以选中最后10行,点‘只运行选中代码’,就可以只运行最后10行代码了,是调试的好工具。
图片/代码模式切换:通过IDE生成的图片相关的代码,为了直观都是显示的图片。但当你要修改代码或在Pycharm中编写代码时,就要用到代码模式了。
下面再来看看代码窗的菜单:
点击+号,是新建脚本
点下拉箭头,依次是:
打开当前项目目录
打开报告文件目录
导出报告(导出后可发给别人)
压缩当前脚本.zip
清理多余图片(录制生成的图片相关的脚本,代码删除后,图片就没用了)
文件异常恢复
五、Log查看窗
显示log的地方,重点说2个功能。
1.每次运行脚本,log的最开始都会自动生成运行命令。这个命令可以脱离IDE放在命令行运行。
2.点右侧过滤按钮,可以按级别过滤日志。
六、文件菜单-对应工具栏的前4个按钮:新建、打开、保存、另存为
6.1新建
点击后会让你选建.air后缀的脚本还是.py后缀的脚本。这里就先都选建.air后缀的脚本,.py后缀需要熟练Python和airtest之后再用(后期会有专门文章)。
新建脚本会初始化代码帮助你从api中引入了airtest的各个接口以及自动初始化设备。
让我们打开刚才新建脚本的文件夹,可以看到实际上.air脚本文件是一个普通的文件夹,里面附带了一个同名的.py文件,AirtestIDE在执行脚本时,实际上执行的是里面的.py文件。也就是说,Airtest脚本虽然自带一个后缀名,然而本质上依然是Python脚本,遵循的是Python语法,我们可以根据实际需要自由地import其他Python第三方库。
airtest设计.air后缀的文件夹,初衷应该是方便新手傻瓜化操作,.air后缀的文件夹就相当于一个项目文件夹,里面除了有同名的.py文件外,通过IDE截取的图像和运行的日志都会放在这个文件夹。但这个.air后缀却给Pycharm中编写Python代码带来一定困扰。
值得注意的是,.air文件夹中必须要有同名的.py文件,否则在命令行执行airtest run test.air 这样的运行指令时会导致失败。
6.1打开
打开一个已存在的.air脚本。
6.2保存
保存当前窗口脚本。
6.3另存为
将脚本保存到其他路径。默认脚本创建后是在AirtestIDE的安装目录下,后面如果卸载IDE或者更新IDE,都会删除安装目录下的文件。所以从一开始就养成把脚本保存在单独的工程路径下,以防丢失。
七、运行菜单-对应工具栏后3个按钮:运行、停止运行、打开HTML报告
7.1运行
运行当前脚本。
7.2停止运行
停止运行中的脚本
7.3打开HTML报告
脚本运行完后,点击报告,会打开HTML报告。
7.4Firebase菜单
是将脚本打包成APK,在手机运行。此功能目前(2021.4.4)官方是弃养状态,不可使用。
八、窗口菜单
AirtestIDE的主界面是由多个可dock窗口组合而成的,我们可以按照自己的开发习惯和实际需要进行灵活拖拽布局,并可以通过下拉菜单"窗口"-"恢复默认布局"将内部布局恢复为默认状态。
布局信息会在软件关闭时会自动保存,下次重新启动软件/下载新版本软件使用时,之前的布局记录会自动延续。
九、选项-设置
十、Device栏
10.1实时坐标显示:可以实时在手机屏幕画面上显示出鼠标位置的坐标(绝对坐标),方便大家获取坐标。此时点击鼠标右键 ,还可以自动将当前坐标信息复制到剪贴板中,在代码里只需要直接粘贴即可插入点击位置的坐标。
10.2相对坐标:该选项依赖于“实时坐标显示”,勾选后,将会以(0, 0) 到 (1, 1) 为范围显示出相对坐标。使用相对坐标可以避免跨分辨率的操作点超出屏幕的问题,使坐标操作兼容性更好。
什么是相对坐标,举个例子,屏幕长宽是2000x2000,那么[1800,1800]这个绝对坐标点的相对坐标就是[1800/2000,1800/2000],即[0.9,0.9]。[1800,1800]这个点在屏幕长宽1000x1000上是不存在的,但你用相对坐标[0.9,0.9],指的是[900,900]这个点,这样,不同大小分辨率的屏幕就都可以兼容了。
10.3Windows窗口无嵌入连接:由于部分windows应用在默认嵌入方案中可能会有无法嵌入、嵌入后无法对应用进行操作、黑屏等问题,因此我们提供了一种备用嵌入方案。
假如勾选了该选项,在嵌入windows窗口时,请使用windows的显示桌面,将桌面上的应用全部最小化,然后仅将AirtestIDE和被测应用恢复到桌面中。点击AirtestIDE的 选定窗口 按钮,使用绿色框将被测应用框选后,IDE的设备面板将消失,接下来就可以正常地进行录制操作。
10.4手机设备显示分辨率:当已经连接好Android手机时,AirtestIDE会在Device窗口显示出手机实时同步画面。如果觉得清晰度较低,可以修改该值,数字越大,清晰度越高。默认为800,取值范围为300-2000之间。
如果还是觉得手机实时画面清晰度不够高,可以在连接手机之前,在下拉菜单中勾选 Use Javacap 模式(不勾选的情况下,默认使用Minicap连接手机),再进行连接。在Javacap模式下,能够看到清晰度更高的手机画面,但是延迟会比默认的Minicap模式要稍微高一些。
十一、Editor栏
11.1兼容模式:有些少部分用户由于显卡兼容性问题,可能在启动AirtestIDE时,不能看到脚本编辑窗口和log窗口中的文字,或者是启动后会闪退,但是通过双击文件夹中的兼容性模式启动.bat脚本能够正常启动AirtestIDE。
默认情况下会选择default模式,如果启动有问题的用户,可以尝试选中下拉菜单中的另外三个选项,并且重启AirtestIDE,查看接下来是否能正常显示脚本编辑窗口和log查看窗口。如果能够生效,未来启动AirtestIDE时都将会以这个配置项来启动,无需每次都手工双击兼容性模式启动.bat脚本来启动AirtestIDE了。
11.2字体大小:可以调节编辑窗口和Log窗口内的文字大小,默认是14px。在AirtestIDE中,还可以通过按住ctrl+鼠标滚轮来实现改变文字大小。
11.3编辑器主题:我觉得默认的主题就挺好。
11.4自动补全:打开此选项后,可以在AirtestIDE中编辑代码时,享受到airtest和poco库的代码自动补全提示。但我的机器打开后会卡。
十二、Airtest栏
12.1自定义launcher文件路径:这个是airtest的高级功能:启动器(后期会有专门文章介绍)。新手不要改这个。
12.2默认log存放路径:用于指定在AirtestIDE中运行脚本时的log目录,IDE将会把产生的log文件、截图数据默认放置在这个目录下。
点击重置按钮将会把log目录设置为系统默认的temp目录,点击清理按钮将会自动帮忙清空该目录下的文件,释放硬盘空间,请操作前确认好没有需要保留的重要log文件。
12.3自定义Python.exe路径:不了解Python环境的话不要修改。AirtestIDE允许使用本地的python.exe来跑在AirtestIDE里写好的脚本。由于AirtestIDE内置了一个python环境,假如你希望能够使用自己的本地python环境(可以跑一些本地安装了的第三方库,可以让你使用本地的python2环境等等),可以通过设置这个选项来改变运行脚本默认使用的python.exe。
点击打开可以打开文件选择窗口,请务必选择一个本地安装的python.exe路径。点击重置将会将填写内容清空。
在mac系统下,需要设置python可执行文件路径,如果使用的是系统python,使用which python指令来获取python可执行文件所在路径(如果是python3,需要使用which python3):
which python3
/Library/Frameworks/Python.framework/Version/3.6/bin/python3
将该路径填写到AirtestIDE的设置窗口即可,请注意填写的是bin/目录下的可执行文件,而不是python所在目录。
假如使用了虚拟环境,就需要填写虚拟环境目录下的python可执行文件路径了,例如在mac系统中可能是
/Users/username/.virtualenvs/your_env/bin/python3
注意:
如果希望使用本地Python环境运行脚本,需要事先在本地环境通过pip安装airtest和pocoui包。
AirtestIDE设置了本地的python.exe路径后,会默认使用 AirtestIDE/sample/custom_launcher.py 来启动脚本,如果使用了自己的launcher.py,请在AirtestIDE中设置自己的launcher.py的脚本路径。
十三、Poco栏
13.1刷新间隔:上期讲的Poco检视器,会定时去拉取手机上最新的元素树,在这里可以设定间隔时间。
13.2Windows窗口区域位置:在嵌入了Windows游戏窗口后,如果想要使用Poco来查看界面元素,可以点该项后面的按钮来设置窗口位置,这是为了能够在Windows窗口上显示poco元素标记用的,不设置不会对脚本运行产生任何影响。
13.3采用渲染分辨率:在一些不支持全面屏手机的app,画面不能充满整个屏幕的时候,出现黑边,poco定位发生偏移。如下图高亮与实际按钮相差一些:
勾选采用渲染分辨率,然后输入竖屏模式下的渲染分辨率,点击OK即可. 渲染分辨率为用逗号隔开的四个数字,数字分别代表竖屏模式下的 offset_x, offset_y, offset_width, offset_heigt.
比如在 1080x2220 分辨率下的大鱼来了,它在手机上会有两个黑边,上黑边高度为 100px ,画面高度为2020px ,下黑边高度为 100px ,所以它的渲染分辨率则为(0 ,100 ,1080 ,2020)
十四、Selenium栏
可设置Chrome.exe的路径,借此运行Selenium相关功能。
注意:如果您安装了geckodriver,并在path环境变量中配置了它,并选中“使用Firefox而不是Chrome”复选框,则不需要设置Chrome路径。强烈建议您改用Chrome因为Firefox浏览器不支持录制功能。
AirtestIDE高级功能
一、图片编辑器
双击代码编辑区里的图片,就可以打开该图片的编辑界面
Snapshot+Recognition
点击左上按钮,对当前手机屏幕截图,并识别图片是否在截图中,识别到后会红圈标出,并在左下显示识别方法和可信度
filename
可以在这里给图片改名,方便阅读和维护
threshold
识别阈值,浮点类型,范围是[0.0, 1.0],默认0.7。也就是当识别可信度=>0.7时就认为是匹配的。
target_pos
要操作的位置点,整型,范围是[1, 9],默认是5即中心点,具体9个点分别代表的位置看图中数字所示。
比如我们设置为9后,切换成代码模式,其代码相应变为
Template(r"tpl1622030412465.png", target_pos=9, record_pos=(-0.044, -0.114), resolution=(1080, 2400))
# record_pos是图片在你手机上的相对位置,resolution是你手机的分辨率。这两个参数表示了图片在你手机上的位置,airtest找图时会优先找这个区域,提高查找速度。
rgb
bool类型,设置在对识别结果进行可信度计算时是否使用rgb三通道,默认为False(即采用灰度图像进行可信度计算)。简单理解,设为True,则不仅匹配图的形,还匹配图的颜色。
比如我们勾选rgb后,其代码相应变为
Template(r"tpl1622030412465.png", rgb=True, record_pos=(-0.044, -0.114), resolution=(1080, 2400))
右键菜单
在图片编辑器的截图上右击,会出现菜单。
Device Snapshot:对屏幕截图
Auto Recognition:在截图上用默认算法进行图像识别
Recognition Methods-Template Recognition(auto resize):自动缩放大小识别
Recognition Methods-Template Recognition(no resize):不缩放识别
Recognition Methods-SIFT Recognition:使用SIFT算法识别
我图片上的那个示例(未勾选rgb),用前面2种算法,找到的图都是错的,但用SIFT就正确找到了
二、手机助手
在IDE中连接好设备后,点击设置窗右上角的工具按钮,点’显示Android助手‘,即可打开安卓助手界面。上面的功能其实就是对adb命令的封装。
安装apk
点击左上的按钮或是把APK拖过去,会打开安装界面,点击Install按钮进行安装
App列表
左下显示手机中安装的应用的包名,可以按关键字筛选或只显示第三方应用。点击某个包名,就可以对其进行相应操作。
另外,点击应用列表中的某个包名,然后在键盘上使用 ctrl+c ,可以把包名复制到剪切板上,之后再使用 ctrl+v 就可以把包名粘贴到脚本编辑窗上,方便我们编写操作应用相关的脚本。
Common Features
open:输入网址,点击open,会在手机上用浏览器打开输入的网址
input:输入文字,点击input,会把输入的文字打在手机上(当你需要从PC复制文本进手机时使用)
IME Manager:可以快速切换手机上的输入法和airtest自带输入法。当你使用Poco后,会自动调用airtest的输入法yosemite,yosemite有自己的输入法面板,就是一个小横条,其目的是为了隐藏其他输入法的面板,以方便自动输入文字和查找元素。当你运行后Poco的脚本,会自动将手机输入法调成yosemite,导致你不能手动在手机上输入文字,这时可以通过这个功能快速切换其他输入法。
Quick Button:unlock解锁屏幕,power手机电源键,snapshot手机截屏
volumn Setting:mute静音,volumn_down音量-,volumn_up音量+
Current App
刷新:将当前屏幕应用的包名和Activity名显示出来
stop:停止选中应用(可通过刷新或左侧列表选中应用)
start:打开选中应用(可通过刷新或左侧列表选中应用)
clear:将选中应用数据清除(可通过刷新或左侧列表选中应用)
backup:备份应用数据
uninstall:卸载选中应用(可通过刷新或左侧列表选中应用)
Remote Debug
相当于一个CMD命令行窗口,不怎么好用,官方也不太推荐,还是用你自己原来的就好。