Android自动化测试初探(二): Hierarchyviewer 捕获Element的实现原理

字体:小中大 |上一篇下一篇|打印 |我要投稿 |推荐标签:Androidandroid软件测试技术自动化测试

  AndroidSDK tools下的工具hierarchyviewer可以展现Device上的Element的层次分布和自身属性,其核心函数之一就是LoadScene,研究后发现其实现方法是向Device的4939端口通过socket的方式发送了一个DUMP的命令,Device会自动处理该命令并将所有Screen上的Element层次结构和属性一并发回,实现代码如下:

public static void listElement(IDevice device){
Socket socket;
BufferedReader in;
BufferedWriter out;
socket = null;
in = null;
out = null;

do{
DeviceBridge.setupDeviceForward(device);
}while(4939!=DeviceBridge.getDeviceLocalPort(device));

socket = new Socket();
try {
socket.connect(new InetSocketAddress("127.0.0.1", DeviceBridge.getDeviceLocalPort(device)));

out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

System.out.println("==> DUMP");
out.write((new StringBuilder()).append("DUMP -1").toString());

out.newLine();
out.flush();
do
{
String line;
if ((line = in.readLine()) == null || "DONE.".equalsIgnoreCase(line))
break;
line = line.trim();
System.out.println(line);
} while (true);
} catch (IOException e) {
e.printStackTrace();
}
}

  运行后的结果摘录其中一部分(button5),列举如下。注:当前device中运行的是2.1SDK中自带的Calculator程序:

com.android.calculator2.ColorButton@43b8bee8mText=1,5 getEllipsize()=4,null mMinWidth=1,0 mMinHeight=1,0 mMeasuredWidth=2,79 mPaddingBottom=1,0 mPaddingLeft=1,0 mPaddingRight=1,0 mPaddingTop=1,0 mMeasuredHeight=2,78 mLeft=2,81 mPrivateFlags_DRAWING_CACHE_INVALID=3,0x0 mPrivateFlags_DRAWN=4,0x20 mPrivateFlags=8,16779312 mID=9,id/digit5 mRight=3,160 mScrollX=1,0 mScrollY=1,0 mTop=1,0 mBottom=2,78 mUserPaddingBottom=1,0 mUserPaddingRight=1,0 mViewFlags=9,402669569 getBaseline()=2,54 getHeight()=2,78 layout_gravity=4,NONE layout_weight=3,1.0 layout_bottomMargin=1,0 layout_leftMargin=1,1 layout_rightMargin=1,0 layout_topMargin=1,0 layout_height=11,FILL_PARENT layout_width=11,FILL_PARENT getTag()=4,null getVisibility()=7,VISIBLE getWidth()=2,79 hasFocus()=5,false isClickable()=4,true isDrawingCacheEnabled()=5,false isEnabled()=4,true isFocusable()=4,true isFocusableInTouchMode()=5,false isFocused()=5,false isHapticFeedbackEnabled()=4,true isInTouchMode()=4,true isOpaque()=5,false isSelected()=5,false isSoundEffectsEnabled()=4,true willNotCacheDrawing()=5,false willNotDraw()=5,false

  另外还支持如下命令:

- LIST will show the list of windows:
LIST
43514758 com.android.launcher/com.android.launcher.Launcher
4359e4d0 TrackingView
435b00a0 StatusBarExpanded
43463710 StatusBar
43484c58 Keyguard
DONE.


转自:http://www.51testing.com/html/12/n-215812.html

更多相关文章

  1. Android 属性动画 源码解析 深入了解其内部实现
  2. Android 内存分析命令
  3. android scroller用法及属性
  4. Android中使用代码执行shell命令
  5. Android动态设置edittext的hint属性显示的提示文字大小

随机推荐

  1. PHP方法的返回值示例详解
  2. 一个简单的留言板
  3. dom元素的增删改操作
  4. PHP中国际化的字符串排序和比较对象详解
  5. js中的firstElementChild,lastElementChil
  6. 那些前端开发必不可少的生产力工具
  7. js的自定义dataset对象 ,js操作css, js中
  8. 如何让PHP的代码更安全
  9. Opencv创建车牌图片识别系统方法详解
  10. 解析PHP观察者模式Observer