开启真机的View Server引入HierarchyViewer/By写monkeyrunner自动化测试脚本

来源:互联网 发布:linux 改sftp 22端口 编辑:程序博客网 时间:2024/05/21 18:13

Android SDK自带一个工具叫做monitor,它里面的Hierarchy Viewer可以看到app的UI结构、控件属性等等。monkeyrunner有一个类By,通过By可以在代码中根据控件ID定位到该控件从而写更有针对性代码(比如点击按钮、比如获取文本框中的字符串)。

可是出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器。只有当设备或模拟器上启动一个叫做View Server的服务,Hierarchy Viewer才能与其进行socket通信,才能看到app的“View”。而绝大多数商业手机是无法开启View Server的,所以Hierarchy Viewer也就无法连接到普通的商业手机。而By又依赖于Hierarchy Viewer,所以如果想在普通的商业手机上通过控件ID去做一些操作,连接模拟器运行通过的脚本连接真机运行是会抛错的。

不过小米手机是个例外,通过执行如下命令可以轻易开启它的View Server: 
adb shell service call window 1 i32 4939 
然后通过执行如下命令判断是否开启View Server: 
adb shell service call window 3 
若返回值是:Result: Parcel(00000000 00000001 '........') 说明View Server处于开启状态 
若返回值是:Result: Parcel(00000000 00000000 '........') 说明View Server处于关闭状态 
如果想关闭View Server执行如下命令: 
adb shell service call window 2 i32 4939

除了小米手机之外,别的手机能不能开启View Server?经过一番调查和实践,其实只要是root,并且装有busybox的手机,通过修改手机/system/framework中的某个文件,就能够开启View Server。

该文摘自:http://www.tuicool.com/articles/J3Y3Mb

阅读全文
0 0
原创粉丝点击