UiAutomator 测试工程开发小结

时间:2021-04-15 08:44:38

一.    关于bundle无法导入中文参数

答:    将文件改为UTF-8格式

二.    关于对无法抓取的控件进行快速输入问题

答:    主要通过pressKeyCode方法,首先将光标锁定在输入处。

预先把String数据转化为KeyCode数组,然后再通过上述方法输入。

           for(int i=0;i<id.length();i++){
char c =id.charAt(i);
if(c >=48&&c <=57){
UiDevice.getInstance().pressKeyCode(c-41);
}else if(c >=97&&c <=122){
UiDevice.getInstance().pressKeyCode(c-68);
}else if(c >=65&&c <=90){
UiDevice.getInstance().pressKeyCode(59);
sleep(20);
UiDevice.getInstance().pressKeyCode(c-36);
}else if(c ==32){
UiDevice.getInstance().pressKeyCode(62);
}else{}}

三.     关于UiWatcher使用问题

答:    第一点:其触发在对某控件对象操作,却发现其对象不存在的情况下。

第二点:其触发会执行注册的UiWatcher对象的checkForCondition方法。

第三点:其需要先注册,才会有作用;如果没有需要,应尽早删除注册。

四.     关于点操作的严谨性问题

答:   尽可能勿用具体数值作为点操作坐标。

应根据长宽所占具体比例,以适应屏幕大小的变化。

五.     关于控件抓取条件的设置问题

答:   控件的抓取应主要以不变的属性为主,比如classname;同时还要兼顾其与同一界面的其它控件主要区别特性。

以能唯一的确定其控件,也尽可能的使其在维护时更轻便。

六.    关于测试方法的大小问题

答:    不要将很多操作放在同一个方法中,缺少了复用性。

根据测试逻辑,合理设置方法大小,分割复杂测试方法。

七.    关于测试信息的问题

答:    测试过程的中间信息,应尽可能简洁切详尽。

以方便精确定位脚本或Device问题所在。

八.    关于多系统uiautomator测试工程架构问题

答:    根据Java面向对象特性,采用三层架构,最底层为多系统复用方法;第二层为具体系统专属方法;最上层基本不动为测试方法管理层。

九.    关于uiautomator工程打包问题

答:    首先建立build.xml:

For Example  command:    android create uitest-project -n Test -t android-22 -p .

Ant打包

十.     关于Exception问题

答:    在Exception发生后,应该去截图当前屏幕。