0

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

这个脚本有什么问题?

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

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

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

4

2 回答 2

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')
于 2011-03-02T20:00:53.160 回答
0

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

无效类型(字符串消息)

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

参见:开发工具-Monkey Device

于 2012-05-15T23:37:57.253 回答