Android TV磁贴类app自动化框架二次改造(基于UiAutomator)

本文介绍了针对Android TV应用的自动化测试框架改造,解决了非标准控件识别问题和TV应用无触摸操作的挑战。框架包括解析、坐标转换、图片比较和异常处理模块,并实现了基于UiAutomator的持续集成。
摘要由CSDN通过智能技术生成

简介

项目一直是手工测试为主,加上一直是TV类应用,很多自动化工具都没有针对TV类项目做很好的适配,所以只有自己动手了。主要针对项目的特殊性进行了部分改造,不一定适用于其他项目。(涉及隐私,就不提供json文件和软件名字啦)

痛点

1.非标准控件的难处
这里写图片描述
通过uiautomatorviewer获取到的不一样的磁贴,属性全部相同(除了坐标点),意味着没法通过id和class+index方式获取,text属性为空,也就没有办法通过byText的方式获取uiobject,高度定制的磁贴,让自动化很为难,如果通过坐标点,太坑爹,不能跨设备,还是坑。

2.TV类应用没有触摸操作
TV类安卓程序,主要面向的是遥控器,也就是接收的是keyevent,所以touch事件显得不这么全面,为了最接近用户,还是选择用key来做自动化。

架构模块

这里写图片描述

解析模块

从服务器解析json文件格式,包装成实体类CellInfo,返回一个包含磁铁信息的List。一个磁铁对应一个CellInfo,一个CellInfo需要提取的信息有

  • x坐标
  • y坐标
  • 所属的Tab分类页
  • 每个磁铁的说明标签

所以对应的定义如下:

package launcherClick.model;

public class CellInfo {

    private String label;
    private String tab;

    public String getTab() {
        return tab;
    }

    public void setTab(String tab) {
        this.tab = tab;
    }

    private int x;
    private int y;

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

}

解析用的是第三方开源库org.json,对应的解析代码如下:

package launcherClick;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
im
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值