Airtest 新版来袭!揭秘 Airtest1.1.6 和 AirtestIDE1.2.6 的详细更新内容

1,279 阅读5分钟

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

前言

顶着同学们日常催更的压力,我们的AirtestProject终于又更新啦!这次不仅仅 更新了Airtest和poco这两个测试框架,AirtestIDE也有不少的优化 ,详细的更新内容同学们可以阅读下文。

Airtest1.1.5-1.1.6

Airtest更新了2个版本,包含多个接口的优化和众多bug修复。

1.功能新增/优化

① 新增对 Android11 的支持

② 修改了用于在脚本中记录log的 log() 接口,支持4个参数:

  • args, 可以是字符串或是 traceback 对象,现在还支持传入非字符串,并且对py2做了一下兼容。假如传入的是 traceback 对象,将会自动在报告中标记为报错步骤,否则就是显示正常的 log 内容。
  • timestamp, 参数可以自定义当前这条 log 的时间戳,默认为当前时间(在记录一些长时间的回调中获取到的 log 时,原本默认使用写入本条 log 的时间,但是可能需要修改为 log 产生的时间,比如几分钟前)
  • desc , 自定义一个 log 标题,在报告中有更好的展示效果
  • snapshot, 是否需要截取一张当前的屏幕图像并显示到报告中,方便查看。(同时,因为这个参数的加入,现在airtest脚本如果因为执行Poco语句失败报错而终止时,能够额外截取一张当前画面,方便大家排查问题。)

示例:

data = {"test": 123, "time": 123456}
# 第一条log,步骤名显示title,截取一张屏幕截图
log(data, timestamp=time.time(), desc="title", snapshot=True)
# 第二条log,标记为报错步骤并截取一张屏幕截图
try:
    1/0
except Exception as e:
    log(e, snapshot=True)
# 第三条log,显示传入的字符串
log("中文")

image

③ 新增一个用于指定截图最大尺寸的设置:ST.IMAGE_MAXSIZE 。假如设置为1200,则最后保存的截图长宽都都不会超过1200,有利于进一步缩小截图的图片尺寸。

同时,支持自定义单张截图精度和全局截图精度:

  • snapshot 接口支持传入 quality 参数,单独指定本次截图的图像精度
  • 目前可以使用 ST.SNAPSHOT_QUALITY = xx 设置全局截图精度,在运行脚本时,报告的步骤截图也会采用这个数值进行压缩

示例:

# 设置截图质量为30
ST.SNAPSHOT_QUALITY = 30
# 设置截图尺寸不超过600*600,如果不设置,默认为原图尺寸
ST.IMAGE_MAXSIZE = 600

# touch语句保存的截图质量为30, 尺寸不超过600*600
touch(xx) 
# 本条语句截图质量为90
snapshot(filename="test.png", msg="test01", quality=90)  
# 截图质量为90,尺寸不超过1200*1200
snapshot(filename="test2.png", msg="test02", quality=90, max_size=1200) 
# 不设置的情况下,默认采用ST中的全局变量的数值
snapshot(msg="test12")  

image

playground/android_motionevents.py 里面提供了一些 Android自定义手势 的示例代码,现在直接调用 dev.touch_proxy.perform 接口就可以传入写好的 MoveEvent 列表来进行自定义的滑动了(以前是调用 dev.minitouch.perform ,如果是安卓10就会不兼容)。

示例:

from airtest.core.android.touch_methods.base_touch import *
# tap with two fingers
multitouch_event = [
    DownEvent((100, 100), 0),
    DownEvent((200, 200), 1),  # second finger
    SleepEvent(1),
    UpEvent(0), UpEvent(1)]

device().touch_proxy.perform(multitouch_event)

image

2.bug修复

① iOS修复了上个版本 stop_app() 失效的问题

② 回退了屏幕录制代码到1.0.27之前的版本,取消使用 yosemite.apk 来录屏,避免每次重装过 yosemite.apk 后必须要手工赋予录屏权限才能录屏的问题

③ 在一些无法使用 minicap 的手机上,虽然指定了 Javacap 模式也能截屏,但是在调用 get_display_info 的时候依然调用到 minicap.get_display_info ,如果没有指定 ori_methodadbori ,会导致脚本无法运行成功。 因此修改为假如获取屏幕信息失败,自动调整 为使用 adbori 模式来获取当前屏幕信息。

④ 在脚本中一旦对同一台手机运行了不止一次 connect_device 接口,并指定了不同的设备连接参数时,G.DEVICE 不会更新到最新参数创建出来的设备对象,导致部分手机可能连接失败。现在改为每次更新设备对象时,也会自动更新一下 G.DEVICE

⑤ 修复了在高版本Android手机上,get_ip_address() 接口不能正确获取到手机IP的问题

⑥ 去掉了 assert_exists() 接口使用特殊的 ST.THRESHOLD_STRICT 值作为找图阈值的设定。假如之前设置了 ST.THRESHOLD_STRICT 将会继续沿用该数值,但是如果没有设置的话,默认与其他图片一样都使用指定的 threshold 参数,或是全局的 ST.THRESHOLD ,这样能够方便统一设置和管理,也不容易造成误解。

image

AirtestIDE1.2.6

AirtestIDE更新到1.2.6版本,主要优化了设备连接窗口部分的内容。

1.功能优化/修复

① 全面修改了设备连接模块的逻辑,同时 优化了windows下窗口连接的体验 ,如果在连接手机、windows窗口时遇到BUG,请向我们反馈~

image

反馈渠道:
官方答疑Q群:1017250147
官方公众号留言:AirtestProject
GitHub上提issue:github.com/AirtestProj…

② Airtest更新到1.1.6,支持Android11手机,并且对多个接口进行了修改,以及多个BUG修复,请务必查看此链接确认所有更新内容:github.com/AirtestProj…

③ 修复了使用IDE进行Poco连接的部分问题,并且在Poco启动失败时,不会强制重装Poco,而是尝试杀掉其他冲突的进程

2.更新

① 如使用IDE自带的python环境,则只需将旧版AirtestIDE更新到最新的1.2.6即可。(特别注意:覆盖更新之前请检查脚本是否保存在IDE的安装路径内,如是的话,请将脚本转移到其它非IDE安装路径保存,避免覆盖更新之后,造成IDE安装路径内的脚本丢失!!!)

② 如使用的是本地的Python环境,请使用 pip install -U airtestpip install -U pocoui 命令,将这两个库到最新版本


Airtest官网:airtest.netease.com/
Airtest教程官网:airtest.doc.io.netease.com/
搭建企业私有云服务:airlab.163.com/b2b