2011-02-11 48 views
0

我有一個登錄應用程序,我想要做的是午餐應用程序 ,然後與應用程序交互,發送用戶名和密碼。如何使用Monkeyrunner向Android模擬器發送命令?

這個腳本有什麼問題?

# Imports the monkeyrunner modules used by this program 
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 

# Connects to the current device, returning a MonkeyDevice object 
device = MonkeyRunner.waitForConnection() 

# Installs the Android package. 
device.installPackage('myproject/bin/LoginApp.apk') 

# Runs an activity in the application 
device.startActivity(component='com.example.android.myapplication.MainActivity') 

# Write username and password 
device.press('KEYCODE_BUTTON_SELECT','DOWN_AND_UP') 

device.press('KEYCODE_U','DOWN_AND_UP') 
device.press('KEYCODE_S','DOWN_AND_UP') 
device.press('KEYCODE_E','DOWN_AND_UP') 
device.press('KEYCODE_R','DOWN_AND_UP') 

device.press('KEYCODE_ENTER','DOWN_AND_UP') 

device.press('KEYCODE_P','DOWN_AND_UP') 
device.press('KEYCODE_A','DOWN_AND_UP') 
device.press('KEYCODE_S','DOWN_AND_UP') 
device.press('KEYCODE_S','DOWN_AND_UP') 

device.press('KEYCODE_ENTER','DOWN_AND_UP') 
device.press('KEYCODE_ENTER','DOWN_AND_UP') 

我也嘗試過功能類型,如device.type('user')。 有時運作良好,但有時不會,我不知道爲什麼。

也許,鍵盤的焦點在搜索欄或其他地方。 在腳本中,當我按下選擇按鈕時,我想要選擇文本框來輸入用戶名。

我想到的另一個想法是,我必須等到活動開始/加載正確後再發送命令進行交互。我怎樣才能做到這一點?

回答

3

如果您正在使用仿真器進行測試,您應該在啓動應用程序之後,甚至是中間命令中給出time.sleep(),因爲它們有時速度很慢(取決於您的系統)。

例如,你可以使用下面的代碼:


device.startActivity(component='com.example.android.myapplication/com.example.android.myapplication.MainActivity') 
import time 
time.sleep(10) 
device.press('KEYCODE_BUTTON_SELECT','DOWN_AND_UP') 
0

您也可以使用type()函數來輸入數據。

void類型(字符串消息)

發送包含在消息中的字符,該設備,就好像他們已經輸入設備的鍵盤上。這相當於使用鍵事件類型DOWN_AND_UP爲消息中的每個鍵碼調用press()。 參數 消息包含要發送字符的字符串。

參見:Developing Tools-Monkey Device

相關問題