Introduction
Appium is an open source tool to
automate native, hybrid and mobile
web applications …
iOS Windows
No Changes!!!
Supports physical device as well as an Android emulator or an iOS
Simulator
Don't have to recompile or modify the app for
automation
Appium is now being developed and supported by Sauce
Labs
Good community support
Let us have a look at few more advantages …
Appium XCTest Robotium
UI
Automator
Expresso
iOS/Androi
d
No
Yes
Multiple
Platform
Unit Testing
Functional
Testing
Language
Android
Yes
No
Java or
Kotlin
Android
No
Yes
Java or
Kotlin
Android
No
Yes
Java
Let us compare …
iOS
Yes
Yes
Objective C
or Swift
iOS automation with local Appium server requires a
Mac
Maintaining local Appium server lab requires additional
resources
Documentation is limited or some times too technical
Let us have a look at few limitations …
Changes to XCTest framework often breaks
Appium
Architecture
Appium uses Selenium’s WebDriver API
WebDriver API is based on
JSON Wire Protocol
HTTP Response
HTTP Request
Client Server
XML
JSON
etc.
What is JSON Wire Protocol?
Appium developed Client libraries that
implements JSON Wire Protocol for
Mobile …
java-client
java-client
MobileElement el =
driver.findElementByAccessibilityId("SomeId"); el.click();
java-client
HTTP API: POST
/session/:session_id/element/:element_id/click
Appium
Server
UIAutomator2
XCUITest
java-client
HTTP
Request
HTTP Response
JSON
Appium is a node.js HTTP server that exposes a REST
API
Client initiates session using the Desired Capabilities
Drives Android session using the UiAutomator2
driver
Let’s get bit technical …
Drives iOS session using the XCUITest driver
Uses WebDriverAgent server to interact with Apple’s XCTest native
framework
Uses “Appium Settings” companion app on
Android
Different Types of Mobile Apps
Native
Applicatio
n
Platform SDKs
Java or
Swift
#Native
Native
Applicatio
n
Platform SDKs
Java or
Swift
Easy to automate
Easy to inspect UI elements
Provides rich user experience
Native apps are
fast
Longer development
cycle
Native
Container
(WebView)
#Hybrid
Tricky to
automate
Need to enable debug mode in the Android
app
Tricky to inspect WebView
elements
Native
Container
(WebView)
Provides poor user experience
Hybrid apps are comparatively
slow
Shorter development
cycle
#Mobile Web
Easy to automate
Easy to inspect UI elements
Provides poor user experience
Web apps are comparatively slower
Shorter development
cycle
Appium on Appium on
Setup possibilities …
Let us start the amazing
journey …

WhatIsAppium.pptx