Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比
上一篇文章:
Android自动化测试中AccessibilityService获取控件信息(1)
已经做到了获得控件信息,但是AccessibilityEvent.getSource()得到的是被点击的单体对象。我们需要获得是整个窗口的对象,在API16中AccessibilityService新引入的方法getRootInActiveWindow()可以满足我们的要求,所以我们用这个方法得到整个窗口,然后遍历得到所有子节点。
- AccessibilityNodeInfo rowNode = getRootInActiveWindow();
- if (rowNode == null) {
- Log.i(TAG, "noteInfo is null");
- return;
- } else {
- recycle(rowNode);
- }
- Log.i(TAG, "==============================================");
其中循环的方法recycle():
- public void recycle(AccessibilityNodeInfo info) {
- if (info.getChildCount() == 0) {
- Log.i(TAG, "child widget----------------------------" + info.getClassName());
- Log.i(TAG, "showDialog:" + info.canOpenPopup());
- Log.i(TAG, "Text:" + info.getText());
- Log.i(TAG, "windowId:" + info.getWindowId());
- } else {
- for (int i = 0; i < info.getChildCount(); i++) {
- if(info.getChild(i)!=null){
- recycle(info.getChild(i));
- }
- }
- }
- }
打印输出的信息有:控件名、是否点击弹出对话框、窗口ID;你还可以查看API里的方法,获得你想要的信息。
部署到手机上,测试结果如下:
从测试的结果看,我们确实得到了我们想要的控件信息,但是发现每一个窗口信息其实是点击前的窗口信息,我们无法得到当前窗口信息。我要做的是遍历当前窗口里的所有控件。这不符合我的要求,所有对AccessibilityService的研究就到此为止了。把这个放出来,可能有点测试需求得到之前画面的信息,那么这个可以满足你。
所以下一步,我又要从其他方面着手啦。
总结
三种方式学习完了,对比一下各种方式的优缺点!
Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比的更多相关文章
- Android自动化测试中AccessibilityService获取控件信息(1)
Android自动化测试中AccessibilityService获取控件信息(1) 分类: android自动化测试2014-03-24 15:31 3455人阅读 评论(16) 收藏 举报 and ...
- Android 开发添加控件事件的三种方式
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view ...
- Action 中获取表单数据的三种方式
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905 冷血之心的博客) Action 中获取表单提交数据 ...
- UiAutomator源码分析之获取控件信息
根据上一篇文章<UiAutomator源码分析之注入事件>开始时提到的计划,这一篇文章我们要分析的是第二点: 如何获取控件信息 我们在测试脚本中初始化一个UiObject的时候通常是像以下 ...
- UiAutomator源代码分析之获取控件信息
依据上一篇文章<UiAutomator源代码分析之注入事件>開始时提到的计划,这一篇文章我们要分析的是第二点: 怎样获取控件信息 我们在測试脚本中初始化一个UiObject的时候一般是像下 ...
- Android开发中目前流行控件和知识点总结
Android开发中目前流行控件和知识点总结 1.SlidingMenu 滑动菜单 应用案例:Facebook . Path 2.0 .人人.网易新闻 下载地址: https://github.c ...
- 【VS开发】在VS2010中开发ActiveX控件设置测试容器的方式
在VS2010中开发ActiveX控件设置测试容器的方式 借鉴文章http://blog.csdn.net/waxgourd0/article/details/7374669 在VS2010中开发MF ...
- WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式
原文:WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 由于WPF中没有提供PropertyGrid控件,有些业务需要此类的控件.这篇文章介绍在WPF中实现PropertyGr ...
- ASP.NET MVC中使用Unity进行依赖注入的三种方式
在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...
随机推荐
- Awk 从入门到放弃(3) —- 内置变量
转:http://www.zsythink.net/archives/1374 NF :当前行的字段个数 NR: 行号 FNR: 各文件分别计数的行号 RS: 输入行分隔符 ORS:输出行分隔符 内 ...
- 重启oracle数据库的操作方法
在实际的应用中,有时候工作数据库需要重新启动.本文介绍了一个特别实用的操作步骤,希望对大家有所帮助. 1. 停应用层的各种程序 2. 停Oralce的监听进程 $ lsnrctl stop 3. 在独 ...
- Python sqlalchemy使用
import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declar ...
- os、os.path模块中关于文件、目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举 ...
- Java——IO类,字符流读数据
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- python 安装包查看
pip freeze可以查看已经安装的python软件包和版本 pip list 也可以
- HTML5之pushstate、popstate操作history,无刷新改变当前url
一.认识window.history window.history表示window对象的历史记录,是由用户主动产生,并且接受javascript脚本控制的全局对象.window对象通过history对 ...
- windowsphone开发页面跳转到另一个dll中的页面
WP的页面跳转一般是只能跳转到本DLL的页面, 如果要跳转到其他DLL的页面则需要这样写 (Application.Current.RootVisual as PhoneApplicationFram ...
- PostgreSQL数据库创建只读用户总结
好久没有弄,有点忘了,今天有客户问这个问题,发现几个SQL还解决不了,于是总结一下: --以超级用户登录数据库,创建用户: postgres=# create user test_read_only ...
- videojs 隐藏videobar
video::-internal-media-controls-download-button { display: none; } video::-webkit-media-controls-enc ...