SoftwareTestPilot
8 Q&A · 2 Years Experience

Appium Mobile Testing Interview Questions for 2 Years Experience (2026)

Appium & mobile test automation interview questions for Mobile QA Engineers with 2 years of experience.

  • 3 min read
  • Difficulty: Medium
  • 2 yr · Mobile QA
  • Updated October 2026
  • SoftwareTestPilot
SoftwareTestPilot
QA Editorial Team
Published:
0 / 8 reviewed
0%

1. Appium Setup and Capabilities

Easy Very Common 1 minQ1 / 8

Q1.How is Appium 2 structured, and what changed from Appium 1?

Detailed explanation

Short answer: Appium 2 is a server plus separately installed drivers (UiAutomator2 for Android, XCUITest for iOS) and optional plugins. In Appium 1 the drivers were bundled. Your test client sends W3C WebDriver commands to the server, which passes them to the driver for that platform.

npm install -g appium
appium driver install uiautomator2
appium driver install xcuitest      # macOS only
appium                              # starts the server on port 4723

Another Appium 2 change: the default base path is /, not /wd/hub. Old client configs that still use /wd/hub fail to connect.

Follow-up questions
  • What is an Appium plugin? (e.g. the images plugin for image-based locators)
RelatedQ3
Easy Very Common 1 minQ2 / 8

Q2.Write the capabilities to launch an Android app with UiAutomator2.

Detailed explanation

Short answer: Appium 2 follows W3C rules, so non-standard capabilities need the appium: prefix. Client option classes add it for you.

UiAutomator2Options options = new UiAutomator2Options()
    .setDeviceName("Pixel_7_API_34")
    .setApp(System.getProperty("user.dir") + "/apps/demo.apk")
    .setAutoGrantPermissions(true);

AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723"), options);

The JSON sent looks like {"platformName": "Android", "appium:automationName": "UiAutomator2", "appium:app": "..."}. A missing prefix on a raw map is a common reason a session will not start.

Easy Very Common 1 minQ3 / 8

Q3.What do noReset and fullReset do?

Detailed explanation

Short answer: by default, UiAutomator2 clears app data between sessions without uninstalling. noReset=true keeps app data (useful to stay logged in during local debugging). fullReset=true uninstalls and reinstalls the app for a completely clean start, at the cost of time.

For CI, prefer a predictable clean state; tests that depend on leftover data from a previous run are a common cause of "passes locally, fails in CI".

Confidence check

If you can confidently answer the Appium Setup and Capabilities questions above, you're well prepared for this section of your interview. Move on, or rehearse the trickier ones aloud with our AI mock interviewer.

2. Locators, Waits, Contexts and Gestures

Easy Common 1 minQ4 / 8

Q4.Which locator strategy should you prefer on mobile, and why avoid XPath?

Detailed explanation

Short answer: prefer accessibility id (content-desc on Android, accessibilityIdentifier on iOS) because it is fast and works on both platforms. Then resource-id (Android). Use XPath last: the driver must build and search the whole UI tree, which is slow and breaks when the layout changes.

driver.findElement(AppiumBy.accessibilityId("login_button")).click();
driver.findElement(AppiumBy.id("com.example:id/email")).sendKeys("qa@example.com");

If the app has no accessibility ids, ask developers to add them - it also helps screen-reader users.

Medium Common 1 minQ5 / 8

Q5.How do you wait for elements in Appium?

Detailed explanation

Short answer: use explicit waits on a condition; avoid Thread.sleep. Do not combine a large implicit wait with explicit waits - the timings add up in confusing ways.

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));
WebElement banner = wait.until(
    ExpectedConditions.visibilityOfElementLocated(AppiumBy.accessibilityId("welcome_banner")));

Common failure: waiting for presence when the element exists but is still covered by a loading spinner. Wait for the spinner to disappear, or for the element to be clickable.

Medium Occasional 1 minQ6 / 8

Q6.How do you test a hybrid app's WebView?

Detailed explanation

Short answer: list the contexts, switch to the WEBVIEW_... one to use web locators, and switch back to NATIVE_APP afterwards. On Android the app must enable WebView debugging in its build.

Set<String> contexts = driver.getContextHandles();   // e.g. [NATIVE_APP, WEBVIEW_com.example]
driver.context(contexts.stream().filter(c -> c.startsWith("WEBVIEW")).findFirst().orElseThrow());
driver.findElement(By.cssSelector("#pay-now")).click();
driver.context("NATIVE_APP");
Medium Occasional 1 minQ7 / 8

Q7.How do you scroll or swipe in Appium 2?

Detailed explanation

Short answer: use W3C Actions, or the driver's mobile: gesture commands. The old TouchAction API is deprecated and has been removed from recent Java clients.

// UiAutomator2 gesture extension
boolean canScrollMore = (Boolean) driver.executeScript("mobile: scrollGesture", Map.of(
    "left", 100, "top", 300, "width", 600, "height", 1200,
    "direction", "down", "percent", 0.75));

On Android you can also scroll to text with a UiScrollable selector through AppiumBy.androidUIAutomator(...).

Medium Occasional 1 minQ8 / 8

Q8.An element is 'not found' but you can see it on screen. How do you debug?

Detailed explanation

Work through these in order:

  1. Check the page source with driver.getPageSource() or Appium Inspector - the attribute may differ from what you expect.
  2. Check the context - you may still be in NATIVE_APP while the element is inside a WebView (or the reverse).
  3. Check timing - is an animation or loader still running?
  4. Check if it is off-screen - scroll it into view first.
  5. Check for a system dialog (permissions) on top of the app.
RelatedQ6
Confidence check

If you can confidently answer the Locators, Waits, Contexts and Gestures questions above, you're well prepared for this section of your interview. Move on, or rehearse the trickier ones aloud with our AI mock interviewer.

Quick revision

  1. Q1: How is Appium 2 structured, and what changed from Appium 1 — Short answer: Appium 2 is a server plus separately installed drivers (UiAutomator2 for Android, XCUITest for iOS) and optional plugins.
  2. Q2: Write the capabilities to launch an Android app with UiAutomator2. — Short answer: Appium 2 follows W3C rules, so non-standard capabilities need the appium: prefix.
  3. Q3: What do noReset and fullReset do — Short answer: by default, UiAutomator2 clears app data between sessions without uninstalling.
  4. Q4: Which locator strategy should you prefer on mobile, and why avoid XPath — Short answer: prefer accessibility id (content-desc on Android, accessibilityIdentifier on iOS) because it is fast and works on both platforms.
  5. Q5: How do you wait for elements in Appium — Short answer: use explicit waits on a condition; avoid Thread.sleep .

Frequently asked questions

1.What Appium topics are asked at 2 years of experience?
Setup and capabilities, locator choice, waits, native vs hybrid contexts, gestures and practical debugging. Parallel device runs, cloud farms and pipeline design are usually senior topics.
2.Do I need a Mac to practice Appium?
Only for iOS. Android practice works on Windows, macOS or Linux with Android Studio's emulator.

Appium jobs hiring now

Live, indexable Appium openings — updated daily in Jobs Radar.

Browse all QA jobs on Jobs Radar

Loading current openings…

Home