2013-03-06 54 views
0

嘗試使用MonkeyRunner執行一些測試並希望使用AndroidViewClient處理EditText小部件。AndroidViewClient中的findViewByIdOrRaise問題

我相信我正確使用AndroidViewClient(下面的相關內容),findViewByIdOrRaise()總是會引發錯誤。我已經嘗試了每個指定想到的ID的變體。

這裏是我的活動的XML片段:

<EditText 
    android:id="@+id/someText" 
    ... > 
    <requestFocus /> 
</EditText> 
<!-- Yes, that is the actual id of my EditText --> 

在我MonkeyRunner腳本我有以下幾點:

device, serialno = ViewClient.connectToDeviceOrExity(serialNo=myDeviceId) 
vc = ViewClient(device=device, serialno=serialno) 
device.installPackage(apkPath) 
device.startActivity(component='com.app.name/com.app.name.ActivityName') 
editTextId = 'id/someText' 
try: 
    someText = vc.findViewByIdOrRaise(editTextId) 
    someText.touch() 
    someText.type('Derp derp derp') 
except ViewNotFoundException, e: 
    # The comma above is because Jython 2.5.3 does not support the AS keyword 
    print ' [*] %s' % (e) 

當然,我的代碼是做多一點(但不多)比所示。我剝去了一切看起來不相關的東西。我很樂意把它放在那裏,但不想從這裏的代碼嘔吐開始。

我看了所有我能找到的題目

任何想法對我在做什麼錯誤?

回答

2

最新版本的ViewClient爲應用程序中的每個視圖提供了一個唯一的ID。 id格式是i/no_id/number。您可以使用名爲dump.py的腳本查看當前視圖。它位於ViewClient的示例文件夾中。

+0

很好,我能弄明白。寫我自己的方法找到唯一的ID。作爲參考,這裏是你提到的腳本:https://github.com/dtmilano/AndroidViewClient/blob/master/AndroidViewClient/examples/dump.py – CatShoes 2013-03-07 14:15:00