top of page

Using MonkeyRunner to Test Android Apps

Using MonkeyRunner to Test Android Apps

Mobile app testing is an essential part of the development process to ensure that your app functions correctly across various devices and scenarios. However, manual testing can be time-consuming and error-prone. To streamline the testing process, developers often turn to automation tools. One such tool is MonkeyRunner, a script-based testing framework for Android apps.

In this blog post, we'll explore how to use MonkeyRunner to automate the testing of Android apps.

What is MonkeyRunner?

MonkeyRunner is a part of the Android SDK that provides a way to write scripts to automate tasks and test Android apps on physical devices or emulators. It simulates user interactions, such as tapping, swiping, and pressing hardware buttons, to mimic real-world usage scenarios.

Setting Up the Environment

Before we dive into the code, make sure you have the following prerequisites:

  1. Android SDK: Install the Android SDK and add the tools and platform-tools directories to your system's PATH.

  2. Python: MonkeyRunner scripts are written in Python. Ensure you have Python installed on your system.

Writing the MonkeyRunner Script

Let's write a basic MonkeyRunner script in Python that interacts with an Android app. This script will launch the app, simulate touch events, and capture screenshots.

Step 1: Create the MonkeyRunner Script

Create a new Python (.py) file in your project directory and name it

Step 2: Import MonkeyRunner Modules

In your file, import the necessary MonkeyRunner modules:

from import MonkeyRunner, MonkeyDevice

Step 3: Connect to the Device

Connect to the Android device or emulator using MonkeyRunner:

device = MonkeyRunner.waitForConnection()

Step 4: Launch the App

Launch the target app on the connected device:

package_name = "com.example.myapp"  # Replace with your app's package name
activity_name = "com.example.myapp.MainActivity"  # Replace with the main activity's name

device.startActivity(component=package_name + "/" + activity_name)
MonkeyRunner.sleep(5)  # Wait for the app to launch (adjust the time as needed)

Step 5: Simulate Touch Events

Simulate touch events on the app screen:

device.touch(500, 1000, MonkeyDevice.DOWN_AND_UP)  # Replace with desired coordinates
MonkeyRunner.sleep(2)  # Wait for 2 seconds

Step 6: Capture Screenshots

Capture screenshots of the app:

screenshot = device.takeSnapshot()
screenshot_path = "path/to/save/screenshot.png"
screenshot.writeToFile(screenshot_path, "png")

Step 7: Clean Up

Close the app and disconnect from the device:"am force-stop " + package_name)

Running the MonkeyRunner Script

To run the MonkeyRunner script, execute the following command in your terminal:


This will execute the script, simulating touch events on the target app and capturing screenshots.


Automating Android app testing with MonkeyRunner can save you time and effort while ensuring your app's functionality across various scenarios. By integrating MonkeyRunner scripts, you can harness the power of one of the best automation tools to create a seamless testing process for your Android apps. Remember to customize the scripts according to your app's specific features and requirements.

Happy testing!


Blog for Mobile App Developers, Testers and App Owners


This blog is from Finotes Team. Finotes is a lightweight mobile APM and bug detection tool for iOS and Android apps.

In this blog we talk about iOS and Android app development technologies, languages and frameworks like Java, Kotlin, Swift, Objective-C, Dart and Flutter that are used to build mobile apps. Read articles from Finotes team about good programming and software engineering practices, testing and QA practices, performance issues and bugs, concepts and techniques. 

Monitor & Improve Performance of your Mobile App


Detect memory leaks, abnormal memory usages, crashes, API / Network call issues, frame rate issues, ANR, App Hangs, Exceptions and Errors, and much more.

Explore Finotes

bottom of page