Create First Appium Test for Android App

 


Here’s a step-by-step guide to create your first Appium test for an Android device using Eclipse IDE on Windows, including how to write the script in Java and run it on a real or emulator device.

Pre-Requisites


ToolPurpose
Java (JDK 11+)Required for running Appium + Java
Eclipse IDEIDE for Java development
Android StudioFor Android Emulator + SDKs
Appium Desktop or ServerTo run Appium
Node.jsRequired by Appium
Appium Java Client LibraryAdded to Eclipse project
Appium Inspector (Optional)For element locator help
Android device/emulatorTo run the test


1. Install Required Tools


2. Setup Java Project in Eclipse

  • Open Eclipse → Create a New Java Project → example: AppiumAndroidTest
  • Create a new package → example: com.appium.test
  • Create a new class → example: FirstTest
  • Add Appium Client Library:
    • Right click on project → Build Path → Add External JARs

    • Add:



3. Setup Android Device/Emulator

  • Enable Developer Options and USB Debugging on your real device
  • Connect it via USB or launch emulator from Android Studio
  • Check device using:
adb devices




4. Sample App

You can use any .apk file. Example: ApiDemos-debug.apk

Put this APK file in your project folder (example: src/resources/ApiDemos-debug.apk)



5. Write First Appium Test in Java


package com.appium.test;

import java.net.MalformedURLException;
import java.net.URL;
import java.time.Duration;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.MobileElement;

public class FirstTest {

    public static void main(String[] args) throws MalformedURLException {
        
        // Desired Capabilities
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("platformName", "Android");
        caps.setCapability("deviceName", "Android Emulator"); // or "Android Device"
        caps.setCapability("automationName", "UiAutomator2");
        caps.setCapability("app", System.getProperty("user.dir") + "/src/resources/ApiDemos-debug.apk");
        caps.setCapability("appPackage", "io.appium.android.apis");
        caps.setCapability("appActivity", "io.appium.android.apis.ApiDemos");

        // Initialize Driver
        AndroidDriver<MobileElement> driver = new AndroidDriver<>(
            new URL("http://127.0.0.1:4723/wd/hub"), caps);

        // Small Wait
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

        // Example: Click on “Accessibility”
        MobileElement acc = driver.findElementByAccessibilityId("Accessibility");
        acc.click();

        // Close session
        driver.quit();
    }
}




6. Run the Test


     -    Start Appium Server (Appium Desktop or CLI):

appium

     -   Run the FirstTest.java in Eclipse as Java Application.
     -   Observe actions on emulator/device.

Important Points:

- Use Appium Inspector or UIAutomatorViewer (bundled with Android SDK) to inspect element locators.
- Ensure Appium server is running before test execution.
- For real devices, replace "Android Emulator" with actual device name from adb devices.

How to connect IOS Simulator with Appium

  

What is an iOS Simulator?

The iOS Simulator is a part of Xcode (Apple’s IDE) that mimics the behavior of an iOS device on a Mac. It allows developers to:
  • Run and test iOS apps without needing a physical device.

  • Simulate different iPhone/iPad models, screen sizes, and iOS versions.

  • Debug and test UI/UX, performance, and network behavior.

  • iOS Simulator runs only on macOS.




How to Connect iOS Simulator with Appium

Below things should be ready before proceeding to connect ios simulator with Appium:



ToolDescription
macOSRequired to run iOS Simulator
XcodeIncludes iOS Simulator
AppiumInstall via Desktop App or npm install -g appium
Appium DoctorTo verify environment: npm install -g appium-doctor
JavaJDK 11+ installed
Maven or GradleJava dependency manager
Appium Java ClientAdd to your project (e.g., in pom.xml)
WebDriverAgentUsed by Appium to automate iOS



Steps to Connect iOS Simulator with Appium


1. Start iOS Simulator

Open Terminal and type:

open -a Simulator

Or launch from Xcode > Xcode > Open Developer Tool > Simulator



2. Start Appium Server

You can:

  • Launch Appium Desktop > Start Server

  • Or use CLI:


appium




3. Check Simulator Details

List available simulators:

xcrun simctl list devices

Get udid of the simulator you want to use.


4. Write Java Test Script


 Java Code to Launch App in iOS Simulator using Appium



import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.MalformedURLException;
import java.net.URL;

public class IOSSimulatorTest {
    public static void main(String[] args) throws MalformedURLException {
        DesiredCapabilities caps = new DesiredCapabilities();

        // Simulator details
        caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
        caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "16.4"); // Replace with your simulator version
        caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 14");
        caps.setCapability(MobileCapabilityType.UDID, "auto"); // Or specific UDID
        caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");

        // App details
        caps.setCapability(MobileCapabilityType.APP, "/Users/yourname/Downloads/YourApp.app"); // Replace with path to .app or .ipa file

        // Optional
        caps.setCapability("noReset", true);
        caps.setCapability("newCommandTimeout", 300);

        IOSDriver driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), caps);

        // Example Test Action
        System.out.println("App Launched Successfully!");
        driver.quit();
    }
}





Important Points:

  • Replace the .app file path with your built app (from Xcode or CI).
  • Use xcrun simctl or Appium Inspector to inspect app elements.
  • XCUITest is the only supported automation engine for iOS 10+.

How to connect Android Emulator with Appium

  

What is an Android Emulator?

An Android Emulator is a virtual Android device that runs on your computer. It mimics the hardware and operating system of a real Android smartphone or tablet so you can develop, test, and debug Android applications without needing a physical device.



Prerequisites


RequirementDescription
Android StudioInstalled and configured with Android SDK & Emulator
AppiumInstalled via Appium Desktop or npm
Node.jsRequired for Appium
JavaJDK 8+ installed and configured with JAVA_HOME
Appium Inspector(Optional) To inspect UI elements
Appium Java ClientFor writing test scripts in Java
EmulatorCreated & launched using AVD Manager



Step-by-Step Guide

1. Set up Android Emulator

  • Open Android Studio → AVD Manager

  • Create a Virtual Device (example: Pixel 4 with Android 11)

  • Launch the emulator


Tip: You can also launch via command line:

emulator -avd <emulator_name>


2. Check Emulator Connection

Run in terminal or CMD:

adb devices




Output should look like:


List of devices attached
emulator-5554	device




3. Install Appium

npm install -g appium




4. Start Appium Server


From command line:

appium


Or use Appium Desktop and click "Start Server".



5. Set Desired Capabilities

These are needed to connect to your emulator.

{
  "platformName": "Android",
  "platformVersion": "11.0",
  "deviceName": "emulator-5554",
  "automationName": "UiAutomator2",
  "app": "path/to/your/app.apk",
  "noReset": true
}


You can set these in Appium Desktop (Inspector) or in your Java code.



6. Example Java Code to Connect Emulator


import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.MobileElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;

public class EmulatorTest {
    public static void main(String[] args) throws Exception {
        DesiredCapabilities caps = new DesiredCapabilities();

        caps.setCapability("platformName", "Android");
        caps.setCapability("platformVersion", "11.0");
        caps.setCapability("deviceName", "emulator-5554");
        caps.setCapability("automationName", "UiAutomator2");
        caps.setCapability("app", "C:\\path\\to\\your\\app.apk");
        caps.setCapability("noReset", true);

        AndroidDriver<MobileElement> driver = new AndroidDriver<>(
            new URL("http://127.0.0.1:4723/wd/hub"), caps
        );

        // Example action
        System.out.println("App launched successfully!");
        driver.quit();
    }
}






Things to check before test:


CheckDescription
Emulator is runningMake sure the emulator is active
Appium server is startedRun via terminal or Appium Desktop
ADB device listedadb devices shows emulator
APK path correctValid path to your .apk file
Appium Java client addedAdd it to your pom.xml or build.gradle

How to connect IOS Device in Appium

  

To connect an iOS device with Appium for mobile automation testing, you need to set up your environment properly. Here's a step-by-step explanation:


System Requirements

RequirementDetails
OSmacOS (Appium for iOS requires Xcode)
iOS DeviceReal device with Developer Mode enabled
XcodeInstalled from Mac App Store
AppiumInstall via NPM or App
Node.jsRequired for Appium
CarthageRequired for WebDriverAgent
USB CableTo connect your iOS device
Apple Developer IDFor signing WebDriverAgent




Step-by-Step Setup

1. Install Prerequisites

Open Terminal and install the following:

brew install carthage
npm install -g appium
npm install -g ios-deploy



2. Enable Developer Mode on iPhone

  • Plug in the iPhone.

  • On the phone, tap Trust this computer.

  • Open Xcode > Devices and Simulators and ensure your device appears.



3. Create and Build WebDriverAgent

WebDriverAgent (WDA) is used by Appium to interact with iOS.

  • Clone WebDriverAgent or use Appium’s default one located at:

/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent
     
  • Open WebDriverAgent.xcodeproj in Xcode.
  • Set Development Team under Signing & Capabilities for both:

    • WebDriverAgentLib

    • WebDriverAgentRunner

  • Select your device as the build target.

  • Build the project using Xcode (⌘ + B).




4. Start Appium Server

Use terminal or Appium Desktop to start the server:

appium

You can also start it with custom settings:


appium --port 4723





5. Desired Capabilities (Sample)


{
  "platformName": "iOS",
  "platformVersion": "16.0",
  "deviceName": "iPhone 13",
  "udid": "<your_device_udid>",
  "automationName": "XCUITest",
  "bundleId": "com.apple.Preferences",  // or your app's bundle id
  "xcodeOrgId": "<your_team_id>",
  "xcodeSigningId": "iPhone Developer",
  "updatedWDABundleId": "com.yourcompany.WebDriverAgentRunner"
}




To get UDID, use:

idevice_id -l





Step 6: Java Code to Connect iOS Device in Appium


import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.remote.IOSMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.URL;

public class IOSAppiumTest {
    public static void main(String[] args) {
        try {
            DesiredCapabilities caps = new DesiredCapabilities();

            caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
            caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "16.0"); // your iOS version
            caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 13"); // or "iPhone"
            caps.setCapability(MobileCapabilityType.UDID, "your_device_udid_here");
            caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");
            caps.setCapability(IOSMobileCapabilityType.BUNDLE_ID, "com.apple.Preferences"); // Open Settings app
            caps.setCapability("xcodeOrgId", "YOUR_TEAM_ID_HERE"); // from Apple Developer account
            caps.setCapability("xcodeSigningId", "iPhone Developer");
            caps.setCapability("updatedWDABundleId", "com.yourcompany.WebDriverAgentRunner");

            // Start Appium session
            IOSDriver driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), caps);

            // Example: Interact with the Settings app
            System.out.println("App launched on iOS device successfully!");

            // Always quit the driver after test
            driver.quit();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}






Maven Depenencies:


<dependencies>
    <dependency>
        <groupId>io.appium</groupId>
        <artifactId>java-client</artifactId>
        <version>8.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.12.0</version>
    </dependency>
</dependencies>

How to connect Android Device in Appium

 

To connect an Android device in Appium, follow these steps. This setup will allow Appium to communicate with the device for automated testing.


Prerequisites

  • Install Java JDK
  • Install Android Studio or SDK Tools
  • Install Node.js
  • Install Appium Server
  • Install Appium Inspector (optional for inspecting elements)
  • Enable Developer Options and USB Debugging on your Android device
  • USB Cable or Wi-Fi ADB connection



Step-by-Step: Connect Android Device to Appium


Step 1: Enable Developer Mode on Android

  • Go to Settings > About Phone
  • Tap Build Number 7 times to enable Developer Options
  • Go to Settings > Developer Options
  • Enable USB Debugging


Step 2: Connect Device via USB

  • Use a USB cable to connect your phone to your PC.

  • Allow the USB debugging prompt on your device.



Step 3: Verify Device Connection with ADB

Open Command Prompt (Windows) or Terminal (Mac/Linux) and run:

adb devices



You should see your device listed:

List of devices attached
emulator-5554   device

If unauthorized, replug the device and allow debugging access.



Step 4: Start Appium Server

You can use either of the two:

  • Appium Desktop App → Click Start Server

  • Command Line:

appium


Ensure it’s running on:

http://127.0.0.1:4723/



Step 5: Desired Capabilities to Connect Device

Below is a sample configuration for your test script or Appium Inspector:

{
  "platformName": "Android",
  "deviceName": "Android Device",
  "automationName": "UiAutomator2",
  "udid": "your_device_udid",
  "appPackage": "com.example.app",
  "appActivity": "com.example.app.MainActivity"
}



Use adb devices to get udid
Use adb shell pm list packages to find appPackage
Use adb shell dumpsys window windows | grep -E 'mCurrentFocus' for appActivity




Step 6: Run Your Test

You can now run your Appium test using Java, Python, or any supported language binding. For example, in Java:



DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("platformName", "Android");
caps.setCapability("deviceName", "Android Device");
caps.setCapability("automationName", "UiAutomator2");
caps.setCapability("appPackage", "com.example.app");
caps.setCapability("appActivity", "com.example.app.MainActivity");

AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), caps);





Check if something is not working:

Always check if your device is listed with adb devices
Ensure the Appium version supports your Android version
Restart adb server using:

adb kill-server
adb start-server