简介
项目一直是手工测试为主,加上一直是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