我有一个登录应用程序,我想做的是午餐应用程序 然后与应用程序交互,发送用户名和密码。
这个脚本有什么问题?
# 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')
。
有时效果很好,但有时却不行,我不知道为什么。
可能是,键盘的焦点在搜索栏或其他地方。 在脚本中,当我按下选择按钮时,我想要的是选择文本字段来输入用户名。
我想到的另一个想法是,我必须等到活动正确启动/加载,然后发送命令进行交互。我怎么能这样做?
答案 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包含要发送的字符的字符串。