2011-02-11 4 views
0

나는 로그인이있는 응용 프로그램을 가지고 있는데, 내가하고 싶은 것은 점심 응용 프로그램 입니다. 그리고 나서 응용 프로그램과 상호 작용하여 사용자 이름과 암호를 보냅니다.Monkeyrunner를 사용하여 Android 에뮬레이터에 명령을 보내려면 어떻게해야합니까?

이 스크립트의 문제점은 무엇입니까?

# 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')과 같은 함수 유형으로 시도했습니다. 때때로 잘 작동하지만 가끔은 그렇지 않습니다. 이유를 모르겠습니다.

키보드의 초점이 검색 창이나 다른 곳에있을 수 있습니다. 스크립트에서 선택 버튼을 누르면 텍스트 필드를 선택하여 사용자 이름을 입력합니다.

또 다른 생각은 활동이 시작될 때까지 기다렸다가 올바르게로드 된 다음 상호 작용하도록 명령을 보내야한다는 것입니다. 어떻게해야합니까?

답변

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') 
0

또한 입력 데이터 유형() 함수를 사용할 수 있습니다. 그들은 장치의 키보드에 입력 된 것처럼

공공 형 (문자열 메시지)

,이 장치에 메시지에 포함 된 문자를 전송합니다. 이것은 키 이벤트 유형 DOWN_AND_UP을 사용하여 메시지의 각 키 코드에 대해 press()를 호출하는 것과 같습니다. 인수 메시지 보낼 문자가 들어있는 문자열입니다.

참조 : Developing Tools-Monkey Device

관련 문제