Как отправить команды в эмулятор Android с помощью Monkeyrunner? - PullRequest
0 голосов
/ 11 февраля 2011

У меня есть приложение с логином, я хочу сделать приложение-ланч, а затем взаимодействовать с приложением, отправляя имя пользователя и пароль.

Что не так с этим скриптом?

# 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 ]

3 голосов
/ 02 марта 2011

Если вы используете эмулятор для тестирования, вы должны дать 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 голосов
/ 16 мая 2012

Вы также можете использовать функцию type () для ввода данных.

тип void (строковое сообщение)

Отправляет символы, содержащиеся в сообщении, на это устройство, как если бы они были набраны на клавиатуре устройства. Это эквивалентно вызову press () для каждого кода клавиши в сообщении с использованием типа события клавиши DOWN_AND_UP. аргументы сообщение Строка, содержащая символы для отправки.

См .: Разработка инструментов-Обезьяна устройства

...