把前段時間的研究成果記錄一下。主要是通過調用應用軟件的ID進行操作軟件,此操作需要用到以下類和工具:
1、安卓自有目錄\tools\hierarchyviewer.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的座標。