Locator Strategies
Appium supports multiple strategies depending on the platform.
Cross-platform (preferred)
java
// Accessibility ID — works on both Android and iOS
driver.findElement(AppiumBy.accessibilityId("login-button")).click();
// XPath (slow but universal)
driver.findElement(AppiumBy.xpath("//android.widget.Button[@text='Login']")).click();Android-specific
java
// UiAutomator (fast, Android only)
driver.findElement(AppiumBy.androidUIAutomator(
"new UiSelector().text("Login").className("android.widget.Button")"
)).click();
// resourceId (like findById in Espresso)
driver.findElement(AppiumBy.id("com.example.app:id/btn_login")).click();iOS-specific
java
// iOS Predicate String (fast)
driver.findElement(AppiumBy.iOSNsPredicateString(
"type == 'XCUIElementTypeButton' AND label == 'Login'"
)).click();
// iOS Class Chain
driver.findElement(AppiumBy.iOSClassChain(
"**/XCUIElementTypeButton[`label == 'Login'`]"
)).click();