Android Poco初始化时,不大起眼但可能存在坑点的参数们

简介: Android Poco初始化时,不大起眼但可能存在坑点的参数们

此文章来源于项目官方公众号:“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张截图,截图上也没有标注控件点击位置:

image.png

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

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

报告就能正常显示了:

image.png

那这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()

image.png

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

image.png

至于,为什么当初始化时,指定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()

image.png

5. 小结

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


AirtestIDE下载:airtest.netease.com/

Airtest 教程官网:airtest.doc.io.netease.com/

搭建企业私有云服务:airlab.163.com/b2b


相关文章
|
6月前
|
存储 XML Android开发
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
73 0
|
19天前
|
Java Shell Linux
从 am start 的 --user 参数说到 Android 多用户
am start 命令有时并不会乖乖如我们所愿,这时候我们需要知对策并知其所以然。
37 16
|
4月前
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
**Kotlin中的`by lazy`和`lateinit`都是延迟初始化技术。`by lazy`用于只读属性,线程安全,首次访问时初始化;`lateinit`用于可变属性,需手动初始化,非线程安全。`by lazy`支持线程安全模式选择,而`lateinit`适用于构造函数后初始化。选择依赖于属性特性和使用场景。**
150 5
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
|
4月前
|
Android开发 Kotlin
Android面试题之kotlin中怎么限制一个函数参数的取值范围和取值类型等
在Kotlin中,限制函数参数可通过类型系统、泛型、条件检查、数据类、密封类和注解实现。例如,使用枚举限制参数为特定值,泛型约束确保参数为Number子类,条件检查如`require`确保参数在特定范围内,数据类封装可添加验证,密封类限制为一组预定义值,注解结合第三方库如Bean Validation进行校验。
76 6
|
5月前
|
Java Android开发
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
141 0
|
6月前
|
编解码 缓存 安全
Android SELinux 参数语法介绍及基础分析
Android SELinux 参数语法介绍及基础分析
156 0
|
6月前
|
Shell Android开发
Android USB系统初始化init.usb.rc
Android USB系统初始化init.usb.rc
282 0
|
6月前
|
Android开发
Android 动态修改参数配置
Android 动态修改参数配置
45 0
|
Shell Android开发
Android init language与init.rc初始化脚本
Android init language与init.rc初始化脚本
85 0
|
Java 数据安全/隐私保护 Android开发
app逆向实战强化篇——破解某安卓APP请求加密参数
app逆向实战强化篇——破解某安卓APP请求加密参数