In Appium, we can use several locators to identify mobile elements in Android or iOS apps. These locators are similar to those in Selenium but are designed for mobile-specific contexts.
Common Appium Locators:
- By.id – Resource-id of the element
- By.className – UI class of the element
- By.name (deprecated in latest versions) – Content-desc (for accessibility)
- By.xpath – XPath expression
- By.accessibilityId – Accessibility ID (Content-desc in Android)
- By.androidUIAutomator – For Android-specific UI selectors
- By.iOSNsPredicateString – For iOS-specific predicates
- By.iOSClassChain – For iOS class chains
Calculator App Example (Android) in Java
Below is a sample Appium test script in Java using Eclipse IDE to automate basic addition (example: 2 + 3 = 5) in the Android calculator app.
Pre-requisites:
Appium server is running
Android Emulator/Device is connected
Appium Java Client added to the project (
pom.xmlif using Maven or .jar added manually)
Java Code (in Eclipse)
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 java.net.URL; import java.net.MalformedURLException; import java.util.concurrent.TimeUnit; public class CalculatorTest { public static void main(String[] args) throws MalformedURLException { DesiredCapabilities caps = new DesiredCapabilities(); // Device details caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "11"); // change as per your device caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator"); // App details (default Android calculator) caps.setCapability("appPackage", "com.android.calculator2"); caps.setCapability("appActivity", "com.android.calculator2.Calculator"); // No reset caps.setCapability("noReset", true); // Initialize driver AndroidDriver<MobileElement> driver = new AndroidDriver<>( new URL("http://127.0.0.1:4723/wd/hub"), caps); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // Locating buttons by ID driver.findElementById("com.android.calculator2:id/digit_2").click(); driver.findElementByAccessibilityId("plus").click(); // or driver.findElementById("com.android.calculator2:id/op_add") driver.findElementById("com.android.calculator2:id/digit_3").click(); driver.findElementById("com.android.calculator2:id/eq").click(); // Get result MobileElement result = driver.findElementById("com.android.calculator2:id/result"); System.out.println("Result of 2 + 3 = " + result.getText()); driver.quit(); } }
Maven Dependency:
<dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>8.5.1</version> <!-- use latest --> </dependency>