Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Monkeyrunner向Android Emulator发送命令?_Android_Android Emulator_Monkeyrunner - Fatal编程技术网

如何使用Monkeyrunner向Android Emulator发送命令?

如何使用Monkeyrunner向Android Emulator发送命令?,android,android-emulator,monkeyrunner,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

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

这个脚本有什么问题

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

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


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

如果您使用emulator进行测试,您应该在启动应用程序后,甚至在命令之间,给
时间。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')

如果您使用emulator进行测试,则在启动应用程序后,甚至在命令之间,您应该给出
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')
还可以使用type()函数输入数据

无效类型(字符串消息)

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

请参阅:

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

无效类型(字符串消息)

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

见: