老李推荐:第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化
老李推荐:第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200。 既然要使用HierarchyViewer来获取控件信息,那么首先我们看下在脚本中,我们是怎么获得HierarchyViewer的,看下面一段脚本代码: 1 device = MonkeyRunner.waitForConnection() 2 device.wake() 3 device.startActivity(component="com.example.android.notepad/com.example.android.notepad.NotesList") 4 viewer = device.getHierarchyViewer() 5 view = viewer.findViewById("id/button") 代码14-3-1 测试脚本获取HierarchyViewer示例 从代码中我们可以看到其调用的是MonkeyDevice的getHierarchyViewer方法,跟踪进去: 67 @MonkeyRunnerExported(doc = "Get the HierarchyViewer object for the device.", 68 returns = "A HierarchyViewer object") 69 public HierarchyViewer getHierarchyViewer(PyObject[] args, String[] kws) { 70 return impl.getHierarchyViewer(); 71 } 代码14-3-2 MonkeyDevice - getHierarchyViewer方法 通过本书之前的分析,我们知道MonkeyDevice的成员变量impl事实上就是AdbChimpDevice的一个实例,所以往下调用的是AdbChimpDevice的getHierarchyViewer方法: 82 public HierarchyViewer getHierarchyViewer() { 83 return new HierarchyViewer(device); 84 } 代码14-3-3 AdbChimpDevice的getHierarchyViewer方法 AdbChimpDevice会直接调用HierarchyViewer的构造函数对HierarchyViewer进行实例化。实例化会传入AdbChimpDevice的成员变量device,那么这个device又是哪个类的实例呢?从前面的分析中我们知道,这其实是ddmlib库里面的Device这个类的实例,它主要的作用是调用AdbHelper来往ADB服务器发送命令。 好,我们继续看下HierarchyViwer的构造函数: 30 /** 31 * Constructs the hierarchy viewer for the specified device. 32 * 33 * @param device The Android device to connect to. 34 */ 35 public HierarchyViewer(IDevice device) { 36 this.mDevice = device; 37 setupViewServer(); 38 } 代码14-3-4 HierarchyViewer构造函数 这里HierarchyViewer把ddmlib库的Device实例保存为自己的成员变量以便往后利用它来往ADB发送命令。然后会调用setupViewServer这个成员函数来把ViewServer准备好,下一小节我们会去分析下这个方法。
最新文章
- 开发node桌面级应用工具:apk转化epub
- Jsoup系列学习(2)-解析html文件
- MongoDb gridfs-ngnix文件存储方案
- hashmap实现原理浅析
- What is the difference between routine , method , procedure , function ? please explain it with example?
- spark优化
- android释放内存的一个办法
- Cobbler自动化批量部署CentOS6.5系统
- 【转载】CCombobox使用大全
- qt helper
- cocos2d-x3.0数据结构
- 确定当前Python环境中的site-packages目录位置
- wget访问SOAP接口
- InnoDB online DDL与快速索引创建
- 关于接口测试工具postman与DHC介绍
- WCF 的学习过程
- win10显示许可证即将过期,但在激活界面显示的仍是已激活问题解决
- window 控制台解决中文乱码
- Eureka服务注册与发现
- Codeforces Round #525 (Div. 2) E. Ehab and a component choosing problem 数学