把前段时间的研究成果记录一下。主要是通过调用应用软件的ID进行操作软件,此操作需要用到以下类和工具:
1、安卓自有目录 oolshierarchyviewer.bat工具可以用来查看应用程序的ID。
操作hierarchyviewer.bat工具步骤:
(1)、启动安卓模拟器,打开需要查看ID的软件界面。此处以google搜索界面为例。然后双击打开hierarchyviewer.bat,显示搜索界面的activity,即下图左侧被选中的项,表示搜索界面的完整包名。
(2)点击Load View Hierarchy按钮,展现该搜索界面的层级图。选中指定的控件,查看ID名称。
在属性显示区域可以看到各个控件所处的坐标位置,以及可以查看模拟器上任务栏的高度,这些信息可以用于坐标计算中。
2、通过EasyMonkeyDevice类和By类来调用控件ID。
一些常用控件的写法如下:
(1)输入框的ID写法:
easy_device.type(By.id('id/name_text),'zhangsan')
(2)复选框/单选/按钮的ID写法:
easy_device.touch(By.id('id/login_button'),MonkeyDevice.DOWN_AND_UP)
(3)当两个ID名称相同时,可以使用层级进行定位
easy_device.touch(By.id('id/parent_button'),MonkeyDevice.DOWN_AND_UP,By.id('id/current_button'),MonkeyDevice.DOWN_AND_UP)
通过ID进行计算器操作示例calculator.py:
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice from com.android.monkeyrunner.easy import EasyMonkeyDevice from com.android.monkeyrunner.easy import By from com.android.chimpchat.hierarchyviewer import HierarchyViewer from com.android.hierarchyviewerlib.device import ViewNode device = MonkeyRunner.waitForConnection() package = 'com.android.calculator2' activity = 'com.android.calculator2.Calculator' runComponent = package + '/' + activity device.startActivity(component=runComponent) MonkeyRunner.sleep(3.0) easy_device = EasyMonkeyDevice(device) #init easymonkeydevice object must start activity at first.Because the init method will getHierarchyViewer(); easy_device.touch(By.id('id/digit7'),MonkeyDevice.DOWN_AND_UP) easy_device.touch(By.id('id/mul'),MonkeyDevice.DOWN_AND_UP) easy_device.touch(By.id('id/digit8'),MonkeyDevice.DOWN_AND_UP) easy_device.touch(By.id('id/equal'),MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1.0) pic = device.takeSnapshot() pic.writeToFile('D:\monkeyrunner\result.png','png') print 'test finished!'
3、运行文件模拟计算7*8=56,生成result.png。monkeyrunner calculator.py
用ID进行参数差不多都是这个思路。但是对于列表、或者弹出框则无法直接通过点击ID操作成功,需要计算ID的坐标。