Using Appium with Java is one of the most popular approaches for automating mobile applications (Android and iOS). Below is a complete guide to get started with Appium and Java using JUnit or TestNG, and optionally integrate it with BDD frameworks like Cucumber.

What You Need

ToolPurpose
AppiumMobile automation framework
JavaProgramming language for scripting
Appium Java ClientJava bindings for Appium
JUnit/TestNGTest runners
Maven/GradleDependency manager
Android Studio / XcodeEmulator or real device

1. Maven Dependencies (pom.xml)

<dependencies> <!-- Appium Java Client --> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>9.0.0</version> </dependency> <!-- TestNG or JUnit --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.8.0</version> <scope>test</scope> </dependency> </dependencies>

2. Sample Test Script (Android – Java)

import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.*; import java.net.MalformedURLException; import java.net.URL; public class AppiumBasicTest { public AndroidDriver<MobileElement> driver; @BeforeClass public void setUp() throws MalformedURLException { DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); caps.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554"); caps.setCapability(MobileCapabilityType.APP, System.getProperty("user.dir") + "/apps/yourapp.apk"); caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2"); driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), caps); } @Test public void testLoginButton() { MobileElement loginBtn = driver.findElementById("com.example:id/login"); loginBtn.click(); } @AfterClass public void tearDown() { if (driver != null) driver.quit(); } }

3. Appium Server Setup

  1. Install Appium:

     
    npm install -g appium
  2. Start Appium server:

     
    appium
  3. Use an emulator or real device (ensure ADB recognizes it):

     
    adb devices

4. Common Locators

driver.findElementById("com.example:id/element"); driver.findElementByXPath("//android.widget.TextView[@text='Login']"); driver.findElementByAccessibilityId("login_button");

Optional Enhancements

  • Use Page Object Model for maintainability

  • Add Cucumber for BDD (cucumber-java, cucumber-testng)

  • Integrate with CI tools like Jenkins

  • Generate reports with Allure or ExtentReports