上一篇文章:

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的研究就到此为止了。把这个放出来,可能有点测试需求得到之前画面的信息,那么这个可以满足你。

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

总结

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

Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比的更多相关文章

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

    Android自动化测试中AccessibilityService获取控件信息(1) 分类: android自动化测试2014-03-24 15:31 3455人阅读 评论(16) 收藏 举报 and ...

  2. Android 开发添加控件事件的三种方式

    import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view ...

  3. Action 中获取表单数据的三种方式

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905  冷血之心的博客) Action 中获取表单提交数据 ...

  4. UiAutomator源码分析之获取控件信息

    根据上一篇文章<UiAutomator源码分析之注入事件>开始时提到的计划,这一篇文章我们要分析的是第二点: 如何获取控件信息 我们在测试脚本中初始化一个UiObject的时候通常是像以下 ...

  5. UiAutomator源代码分析之获取控件信息

    依据上一篇文章<UiAutomator源代码分析之注入事件>開始时提到的计划,这一篇文章我们要分析的是第二点: 怎样获取控件信息 我们在測试脚本中初始化一个UiObject的时候一般是像下 ...

  6. Android开发中目前流行控件和知识点总结

    Android开发中目前流行控件和知识点总结   1.SlidingMenu 滑动菜单 应用案例:Facebook . Path 2.0 .人人.网易新闻 下载地址: https://github.c ...

  7. 【VS开发】在VS2010中开发ActiveX控件设置测试容器的方式

    在VS2010中开发ActiveX控件设置测试容器的方式 借鉴文章http://blog.csdn.net/waxgourd0/article/details/7374669 在VS2010中开发MF ...

  8. WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式

    原文:WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 由于WPF中没有提供PropertyGrid控件,有些业务需要此类的控件.这篇文章介绍在WPF中实现PropertyGr ...

  9. ASP.NET MVC中使用Unity进行依赖注入的三种方式

    在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...

随机推荐

  1. css display&&hidden

    display:none与visible:hidden的区别 display:none和visible:hidden都能把网页上某个元素隐藏起来,但两者有区别: display:none ---不为被 ...

  2. webservice-jdk客户端代码

    使用wsimport.exe 生成客户端代码 使用JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些文件就可以像调用本地类一样调用本地的类一样 ...

  3. C语言、编程语言发展史

    前言 了解和学习一门语言.一个系统乃至方方面面的任何东西时,如果不知道其历史和现状而只是一上来就一味地闷头苦学,你就很容易“一叶障目不见泰山”. 如此这般火急火燎的就上手苦干,私以为大错特错,所谓“学 ...

  4. hibernate 各种主键生成策略(转)

    http://www.cnblogs.com/kakafra/archive/2012/09/16/2687569.html 1.assigned 主键由外部程序负责生成,在 save() 之前必须指 ...

  5. 萤石A1互联网报警盒子破解细节分析

    攻击点分析:  萤石A1互联网报警盒子使用“全无线解决方案”,传感器的报警通过433.92MHz射频信号发送给报警主机,报警主机可以通过Wi-Fi联网,将报警上传萤石云端,云端会将信息推送到手机端的“ ...

  6. WebGL编程指南案例解析之平移和旋转的矩阵实现

    手写各种矩阵: //矩阵 var vShader = ` attribute vec4 a_Position; uniform mat4 u_xformMatrix; void main(){ gl_ ...

  7. JavaScript权威指南——跳转语句

    前言:JavaScript中有一类语句叫做跳转语句.从名称就可以看出,它使得JavaScript的执行可以从一个位置跳转到另一个位置. return语句让解释器跳出循环体的执行,并提供本次调用的返回值 ...

  8. 第三课 操作系统开发之x86模拟环境搭建

    前面我们讲解了主引导程序的加载过程,并且制作了虚拟软盘a.img,最终这个主引导程序也在机器中成功运行了,但是实际开发的时候,并不会如此简单,免不了调试过程,如果还像上一节中直接将软盘放到机器中去加载 ...

  9. magento的常用调用

    1,CMS调用网站的Url <a href="{{store direct_url="about-us"}}">About Us</a> ...

  10. 安装wordcloud第三方库Unable to find vcvarsall.bat

    前言 本来想要使用python爬一些数据的,制作词云,感觉挺好玩的,不过python安装第三方库的时候遇到了一些问题,有的问题比较好解决,有的就找了好久才知道怎么解决的,故记录下来. 环境 系统:wi ...