上一篇文章:

Android自动化测试中AccessibilityService获取控件信息(1)

已经做到了获得控件信息,但是AccessibilityEvent.getSource()得到的是被点击的单体对象。我们需要获得是整个窗口的对象,在API16中AccessibilityService新引入的方法getRootInActiveWindow()可以满足我们的要求,所以我们用这个方法得到整个窗口,然后遍历得到所有子节点。

  1. AccessibilityNodeInfo rowNode = getRootInActiveWindow();
  2. if (rowNode == null) {
  3. Log.i(TAG, "noteInfo is null");
  4. return;
  5. } else {
  6. recycle(rowNode);
  7. }
  8. Log.i(TAG, "==============================================");

其中循环的方法recycle():

  1. public void recycle(AccessibilityNodeInfo info) {
  2. if (info.getChildCount() == 0) {
  3. Log.i(TAG, "child widget----------------------------" + info.getClassName());
  4. Log.i(TAG, "showDialog:" + info.canOpenPopup());
  5. Log.i(TAG, "Text:" + info.getText());
  6. Log.i(TAG, "windowId:" + info.getWindowId());
  7. } else {
  8. for (int i = 0; i < info.getChildCount(); i++) {
  9. if(info.getChild(i)!=null){
  10. recycle(info.getChild(i));
  11. }
  12. }
  13. }
  14. }

打印输出的信息有:控件名、是否点击弹出对话框、窗口ID;你还可以查看API里的方法,获得你想要的信息。

部署到手机上,测试结果如下:

从测试的结果看,我们确实得到了我们想要的控件信息,但是发现每一个窗口信息其实是点击前的窗口信息,我们无法得到当前窗口信息。我要做的是遍历当前窗口里的所有控件。这不符合我的要求,所有对AccessibilityService的研究就到此为止了。把这个放出来,可能有点测试需求得到之前画面的信息,那么这个可以满足你。

所以下一步,我又要从其他方面着手啦。

总结

三种方式学习完了,对比一下各种方式的优缺点!

最新文章

  1. spring控制并发数的工具类ConcurrencyThrottleSupport和ConcurrencyThrottleInterceptor
  2. junit 测试及assert的扩张
  3. poj1251 最小生成树
  4. QQ音乐API
  5. LRU在MySQL缓存池的实现
  6. Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
  7. 读pomelo的教程-2
  8. android学习日记18--Adapter简介
  9. javascript操作HTML元素
  10. xpath的文本获取
  11. ubuntu 12.10 软件更新源列表
  12. SNMP相关的RFC建议和链接
  13. python-正则表达式练习
  14. Dynamics AX 2012 R2 电子邮件广播错误 0x80040213
  15. 一脸懵逼学习Hive(数据仓库基础构架)
  16. Pandas重塑和轴向旋转
  17. Linux pip 命令无法使用问题
  18. 【sql小坑】在group by里用select字段的别名?
  19. Android WindowManager实现悬浮窗效果 (一)——与当前Activity绑定
  20. MXNet——symbol

热门文章

  1. 快速切题 acdream手速赛(6)A-C
  2. Android中aar和jar文件的认识
  3. H5技术干货
  4. java中数组是不是对象?
  5. 201621123010《Java程序设计》第14周学习总结
  6. koa 框架 介绍 -- 待续
  7. Vue.js 源码学习笔记 - 细节
  8. NodeJS 难点(网络,文件)的 核心 stream 一:Buffer
  9. UI基础:UI程序执行顺序(UIApplicationMain()函数),自定义视图 分类: iOS学习-UI 2015-07-02 22:09 68人阅读 评论(0) 收藏
  10. 如何使用firebug