First, what is Monkeyrunner
The Monkeyrunner tool provides an API for programs written out using this API to control Android devices and emulators outside of Android code. With Monkeyrunner, you can write a Python program to install an Android application or test package, run it, send it an analog keystroke, intercept its user interface picture, and store it on your workstation. The main purpose of the Monkeyrunner tool is to test applications and devices at the functional/frame level, or to run unit test suites, but you can of course use them for other purposes.
Ii. differences between Monkeyrunner tools and monkey Tools
Monkey:
The Monkey tool runs directly in the ADB shell of the device or emulator, generating a pseudo-random stream of events for the user or system.
Monkeyrunner:
The Monkeyrunner tool is a specific command and event control device or emulator that is defined on the workstation through the API.
Iii. test type of Monkeyrunner
1. Multi-Device control: The Monkeyrunner API can implement test suites across multiple devices or emulators. You can pick up all the devices at the same time or start all the simulators at once (or all together), connect to each one by program, and then run one or more tests. You can also use a program to start a configured emulator, run one or more tests, and then close the emulator.
2. Functional test: Monkeyrunner can automatically implement a functional test for an application. You provide input values for keystrokes or touch events, and then observe the screenshots of the output results.
3. Regression test: Monkeyrunner can run an app and compare its result screenshot to a given known good result screenshot to test the application's stability.
4. Scalable Automation: Because Monkeyrunner is an API toolkit, you can develop a complete set of systems based on Python modules and programs to control your Android device. In addition to using the Monkeyrunner API, you can use the standard Python OS and subprocess modules to invoke Android tools such as Android Debug Bridge.
Four, running Monkeyrunner
You can run Monkeyrunner directly with a code file, or enter the Monkeyrunner statement in an interactive conversation. Either way, you need to invoke the Monkeyrunner command under the tools subdirectory of the SDK directory. If you provide a file name as a running parameter, Monkeyrunner will view the file content as a Python program and run it, otherwise it will provide an interactive dialog environment.
The command syntax for Monkeyrunner is:
Monkeyrunner-plugin <plugin_jar> <program_filename> <program_options>
1. cmd dialog box run mode
Such as:
, we simulate one (160,450) of the coordinate click and one return key click, and respectively:
As you can see, when you click Back, the emulator UI returns to the main interface.
2. How the code files run
(1) Create a new monkeyrunnerprogram.py file under $android_root\tools with the following contents:
The code is as follows:
# Imports the Monkeyrunner modules used by this program
From Com.android.monkeyrunner import Monkeyrunner, Monkeydevice, Monkeyimage
# connects to the current device, returning a Monkeydevice object
device = Monkeyrunner.waitforconnection ()
Device.touch (160,450, "down_and_up")
Print "Touch"
Monkeyrunner.sleep (1)
Print "Shoting ... shot.png"
# Takes A screenshot
result = Device.takesnapshot ()
filename = './shot.png '
# writes the screenshot to a file
Result.writetofile (filename, ' png ')
Print filename
Monkeyrunner.sleep (1)
# do some tests
# Presses the Menu button
Device.press (' Keycode_back ', ' down_and_up ')
Print "Press Back"
Print "Shoting ... shot.png"
# Takes A screenshot
result = Device.takesnapshot ()
filename = './shot1.png '
# writes the screenshot to a file
Result.writetofile (filename, ' png ')
Print filename
Monkeyrunner.sleep (1)
(2) Open the command line, go to the Android_root\tools directory, and run the following command:
Monkeyrunner monkeyrunnerprogram.py
can achieve the same test results as just now
V. Detailed usage of Monkeyrunner
1. #Import module;
From Com.android.monkeyrunner import Monkeyrunner, Monkeydevice, Monkeyimage
2. #Connect the current device, and return a Monkeydevice object;
device = Monkeyrunner.waitforconnection ()
If not device:
Print "Please connect a device to start!"
Else
Print "Start"
3. #Install Android package, note that the return value returned by this method is Boolean, which can be used to determine if the installation process is normal;
Device.installpackage ('myproject / bin / myapplication.apk')
Device.removepackage ('Com.example.android.notepad')
Print ('Unload succeeded')
Device.installpackage ('apidemos.apk')
Print ('Installation successful')
4. #Start an Activity;
Device.startactivity (component = 'com.android.htccontacts / com.android.htccontacts.contactstabactivity')
5. #;
result = Device.takesnapshot ()
Result.writetofile ('c: \\ users \\ martin \\ desktop \\ test.png', 'png')
6. #Time delay (seconds);
Monkeyrunner.sleep (3)
7. #Slide the screen;
For I in Range (1,70):
Device.drag (250,850), (250,110), 0.1,10)
Start, end, duration, step
For I in Range (1,70):
Device.drag (250,110), (250,850), 0.1,10)
Monkeyrunner.sleep (1)
8. #Touch the screen;
Device.touch (507,72, "down_and_up")
9. #Execute adb shell command;
Device.shell ("Input text Goup01")
Press the Home button
Device.press ('Keycode_home', 'down_and_up')
Press the back key
Device.press ('Keycode_back', 'down_and_up')
Press the down navigation key
Device.press ('Keycode_dpad_down', 'down_and_up')
Press the UP navigation key
Device.press ('keycode_dpad_up', 'down_and_up')
Press the OK button
Device.press ('Keycode_dpad_center', 'down_and_up')
The corresponding keys correspond to the following names:
HOME Key: Keycode_home
Back key: Keycode_back
Send key: Keycode_call
End key: Keycode_endcall
Up navigation key: Keycode_dpad_up
Down Navigation key: Keycode_dpad_down
Left navigation: Keycode_dpad_left
Right navigation key: Keycode_dpad_right
OK key: Keycode_dpad_center
Volume up key: Keycode_volume_up
Lower Volume key: Keycode_volume_down
POWER Key: Keycode_power
CAMERA Key: Keycode_camera
MENU Key: Keycode_menu
Android Test Monkeyrunner