如何使用Monkeyrunner向Android模拟器发送命令?

时间:2011-02-11 09:04:46

标签: android android-emulator monkeyrunner

我有一个登录应用程序,我想做的是午餐应用程序 然后与应用程序交互,发送用户名和密码。

这个脚本有什么问题?

# 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')。 有时效果很好,但有时却不行,我不知道为什么。

可能是,键盘的焦点在搜索栏或其他地方。 在脚本中,当我按下选择按钮时,我想要的是选择文本字段来输入用户名。

我想到的另一个想法是,我必须等到活动正确启动/加载,然后发送命令进行交互。我怎么能这样做?

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:0)

您还可以使用type()函数输入数据。

void type(字符串消息)

将消息中包含的字符发送到此设备,就好像它们已在设备的键盘上输入一样。这相当于使用键事件类型DOWN_AND_UP为消息中的每个键代码调用press()。 参数 message包含要发送的字符的字符串。

请参阅:Developing Tools-Monkey Device