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

1. 前言

进行 Android poco 初始化的时候,可能大多数同学都是直接在 Poco 辅助窗里选择 Android 模式,然后选择自动帮我们补充 poco 的初始化脚本:

这种情况下,我们大多数都不会关注初始化的参数。但如果我们不了解这些参数的含义,也非常有可能在一些特殊情况下踩到一些坑。下文我们就从一次入坑经历说起吧~

2. 入坑分享:没有传 poco 初始化的参数

有一次在给 Android 设备初始化 poco 时,小 A 采用了下述的方式:

dev1 = Android('127.0.0.1:7555')

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco1 = AndroidUiautomationPoco(dev1)

sleep(1.0)
poco1("计算器").click()

然后在生成报告的时候,小 A 发现,报告没有 Poco 点击计算器的步骤,而只有 1 张截图,截图上也没有标注控件点击位置:

经过一顿排查之后,才发现,原来他这里没有传任何的 Poco 初始化参数,之后他把参数加上:

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco1 = AndroidUiautomationPoco(dev1,use_airtest_input=True, screenshot_each_action=False)

报告就能正常显示了:

那这 2 个 Android poco 的初始化参数,究竟起到怎样的作用呢?我们下文详细说明下。

3. use_airtest_input

use_airtest_input=True是指,使用 Airtest 去执行点击操作,好处是,会在日志里面记录一条 log 记录,这样生成报告时,就能在报告上显示这个点击记录。

如果初始化 Android poco 时,不传入这个参数,默认use_airtest_input=False,则不使用 Airtest 去执行点击操作,而是调用 Android 接口去点击,这时候不会在日志里面记录一条点击的 log,所以会导致报告里面丢失这个点击步骤。

所以,如果同学们不在意 log 内容,或者无需生成测试报告,这个参数可以不传。

但如果同学们需要生成测试报告,在初始化 Android poco 时,还是需要把use_airtest_input=True这个参数传上去。

4. screenshot_each_action

screenshot_each_action是指,是否开启每个 poco 步骤的截图。我们也可以从 1 个对比测试,来看出这个参数的效果:

# 关闭每个步骤的截图操作
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=False, screenshot_each_action=False)

sleep(1.0)
poco("计算器").click()

# 开启每个步骤的截图操作
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=False, screenshot_each_action=True)

sleep(1.0)
poco("计算器").click()

至于,为什么当初始化时,指定use_airtest_input=True,且screenshot_each_action=False 时,仍然会有截图,这是因为使用了 Airtest 的点击,Airtest 点击是默认开启截图的:

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

sleep(1.0)
poco("计算器").click()

5. 小结

本文详细讲述了,进行 Android poco 初始化时,传参和不传参的差别,以及可能带来的坑点。也跟同学们解释了use_airtest_inputscreenshot_each_action这两个参数的作用,后续我们会跟大家分享更多关于 Airtest 报告的内容~


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

官方答疑 Q 群:117973773

呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~


↙↙↙阅读原文可查看相关链接,并与作者交流