如何让页面初始化的时候实现点击事件_辅助程序实现黑盒自动化测试的常见问题...

366bb1538f9870e7450230bb59056f21.png

背景 辅助程序(Accessibility)在大多数机型上具有重启设备后被激活的特性,可以完成Android测试框架(Uiautomator1.0、Uiautomator2.0)无法实现的功能。本文介绍如何搭建辅助程序和如何利用辅助程序进行黑盒测试。并总结了利用辅助程序执行黑盒测试遇到的问题,并在文末总结了各测试方案的应用场景。

辅助程序实现黑盒自动化测试的特点

辅助功能相较于测试框架在部分场景下有一定的优势,可以做更多场景的测试:

1. 运行辅助程序过程中可以执行Uiautomator1.0或Uiautomator2.0测试用例,执行测试用例过程中辅助程序会被中断,当测试用例执行结束后辅助程序会恢复运行;

2. 大部分机型重启设备,服务会自动运行,可以测试部分app开机自启功能等功能;

3. 由于是App方案,所以可以直接读取手机短信,设备插上手机卡后,可以在逻辑数据层拦截短信验证码,实现程序的验证码登陆;

4.辅助程序有较高的优先级,程序保活能力非常强;

由于测试方式是基于Accessibility服务的app,所以也有很多限制:

1. 和被测应用不在同一进程内,相较于Uiautomator2.0只能做黑盒测试;

2. 由于是App实现方案,所以在各系统上存在权限问题,不能像Uiautomator1.0一样获取系统运行信息(最近运行的应用、当前显示的activity)

3. 执行点击动作需要使用AccessibilityNodeInfo#performAction方法,但是此方法只能在clickable=true时生效;

4. 无法直接操作屏幕,需要借助AccessibilityService的手势功能实现滑动屏幕、点击屏幕等动作;

5. 由于系统限制,高版本系统中启动其他App失败;

6. 发送键盘事件受限制,只能发送Home、back、打开通知、打开快捷设置、打开电源弹窗等有限功能;

7. 辅助程序异常退出时会关闭辅助程序配置,需要在设置页面手动配置;

辅助程序服务配置与黑盒自动化测试实现

自定义AccessibilityService服务,在服务内重载系统方法,

初始化测试服务:重载onServiceConnected方法

当服务激活时调用此方法,在这里进行服务的初始化工作,主要配置onAccessibilityEvent方法感知的事件类型和服务配置。

1、获取AccessibilityServiceInfo 对象:

getServiceInfo()方法获取当前使用的AccessibilityServiceInfo对象,如果方法返回null,直接通过AccessibilityServiceInfo()构造方法创建。
 AccessibilityServiceInfo accessibilityServiceInfo = getServiceInfo();
if (accessibilityServiceInfo == null) {
    accessibilityServiceInfo = new AccessibilityServiceInfo();
    setServiceInfo(accessibilityServiceInfo);
}

2、设置AccessibilityServiceInfo#eventTypes标记过滤AccessibilityEvent事件类型:

直接通过或运算符(|)添加标记,下面代码配置过滤控件点击、控件选择、控件获取焦点和文本变化事件,发生配置的事件时会调用onAccessibilityEvent方法。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值