EasyMonkeyDevicevsMonkeyDevice&HierarchyViewerAPIMappingMatrix
1. 前言
本来这次文章的title是写成和前几篇类似的《EasyMonkeyDevice API实践全记录》,内容也打算把每个API的实践和建议给记录下来,但后来想了下觉得这样子并不是最好的方法,鉴于EasyMonkeyDevice其实就是在前几章描述的MonkeyDevice和HierarchyViewer的基础上加了一层Wrapper,把原来的通过接受坐标点或者ViewNode来操作控件的思想统一成通过控件ID来操作,其实最终它们都会转换成坐标点或ViewNode进行操作。以touch和visible这两个API为例子,大家看下以下的源码就很清楚了。
MonkeyDevice里面的touch是用坐标点作为参数的,而下面的EasyMonkeyDevice用得是id(By这个类里面就一个ID而已,有兴趣查其源码),最终还是转成坐标点:
public void touch(By selector, TouchPressType type) { Point p = getElementCenter(selector); mDevice.getImpl().touch(p.x, p.y, type); }HierarchyViewer里面的Visible用的是ViewNode,EasyMonkeyDevice用得是id,最终还是转成ViewNode:
public boolean visible(By selector) { ViewNode node = selector.findView(mHierarchyViewer); return mHierarchyViewer.visible(node); }所以本文应该除了给出API的实践之外还应该把每个API和其与MonkeyDevice和HierarchyViewer的API所对应的API给列出来做一个对应的Map,方便我们参考。
实践中我们还是用SDK自带的NotePad APK,假设已经有一个Note存在的情况下,通过以下步骤来走一遍EasyMonkeyDevice的所有API:
- 使用MonkeyDevice对象实例化EasyMonkeyDevice
- 通过ID Touch一个Note
- 获得进入NoteEditor activity后的WindowId并验证是否正确
- 通过ID检查Note的内容这个EditText是否存在和可见
- 通过Note的ID获得Text
- 通过Note的ID Type进新Text
- 通过Note的ID获得Location
以下是我们操作过程中会看到的两个Activity的截图,先贴上来给大家对以上步骤有一个感性认识,最后我会贴出实践验证性代码。
NotesList Activity截图:
创新互联公司长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为市北企业提供专业的成都做网站、成都网站设计,市北网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
作者 | 自主博客 | 微信 | CSDN |
天地会珠海分舵 | http://techgogogo.com | 服务号:TechGoGoGo 扫描码: | http://ybzwz.com/article/ppegch.html |