UiAutomator 测试工程开发小结
一. 关于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发生后,应该去截图当前屏幕。