Appium is an open-source test automation framework for use in testing native mobile apps, hybrid and mobile web apps. It allows automation of tests across platforms like Android and iOS. Appium uses the WebDriver protocol for communication and follows a client-server architecture where the client sends commands to the Appium server which then executes them on the mobile device. Appium supports locator strategies like ID, XPath and testing features like parallel test execution across devices. It has advantages such as being free, open-source, supporting multiple platforms and frameworks but also has limitations such as requiring app access and slow test speeds.
3. What is Appium ?
Appium is an open-source, cross
platform tool for automated testing
of native, mobile web, and hybrid
application on IOS, Android, and
windows desktop platforms.
5. Client-Server Architecture: Appium is at it’s heart a webserver that exposes a Rest API. It receives connections
from a client, listens for commands, executes those commands on a mobile device, and responds with an HTTP
responses representing the result of the command execution.
Appium Session: Appium is always performed in the context of a session. Clients initiate a session with a server
in ways specific to each library, but they all end up sending a POST / session request to the server, with a JSON
object called the ‘desired capabilities’ object.
Desired Capabilities: It is a set of key-value pairs sent to the Appium server to tell the server what kind of
automation session we’re interested in starting up. There are also various capabilities which can modify the
behaviour of the server during automation.
7. Web Applications
A Web Applications is an app
like any other, with the advantage
that it’s stored on the internet and
can be executed on any browser.
Advantages Of Web Applications
Examples Of Web Applications
8. Native Applications
A Native Applications is a
software program that is
developed for use on a particular
platform or device.
Advantages Of Native Applications
Examples Of Native Applications
9. Hybrid Applications
A Hybrid Application is
technically a web app packed in a
native app container, like the web
app, it is written in HTML, CSS
and Javascript.
Advantages Of Hybrid Applications
Examples Of Hybrid Applications
11. Why Appium ?
• Open Source Not only is Appium free of cost, but also open source. This means Appium
can be tweaked infinitely to work according to your twins.
• Cross-Platform Appium can test any mobile application whether it be a native one, a
hybrid one or even a web app. Whether the app works only on IOS or Android or even both,
Appium has you covered. Above that, Appium, itself can be installed on windows, Mac and
Linux.
• Framework Support Appium is a framework is also supported by various automation
testing tools out there. You shouldn’t be loced into a specific language or framework to
write and run your tests.
• Community A budding community is extremely necessary. An active community results in
faster bug and reports and easier troubleshooting which is key to the success of an
automation testing tool.
12. Why Choose Appium ?
Free and open source
Supports only android
Need app source code /
library
Small changes in Robotium
code leads to a complete
rebuild
Supports java only. Not
compatible with selenium at
all
Not such a proactive
community
Free and Open Source
Supports both iOS and android
No need for app source code
Doesn’t reinstall application
Support multiple frameworks
and programming languages
Strong and Active Community
Free and Open Source
Supports Only Android
Need for app source code
Supports only android 2.3-4.4
Compatible with selenium
and Jenkins
Community not as strong as
appium
14. JSON Wire Protocol
The JSON wire protocol (JSONWP) is a transport mechanism created by webdriver
developers. This wire protocol is a specific set of predefined, standardized endpoints
exposed via a RESTful API.
JSON
OBJECT
{Key} : {Value}
Client
Server
Session
Web Element
COOKIE | CAPABILITIES | LOGS | PROXY OBJECTS
16. Architecture
• Appium is an HTTP server which is written in Node JS that creates and handles
WebDriver session. Its Architecture is similar as Selenium WebDriver Server.
• Appium Architecture is different from Android to iOS.
• The fact that we have a client/server architecture opens up a lot of possibilities: we
can write our test code in any language that has a http client API, but it is easier to
use one of the Appium client libraries. We can put the server on a different
machine than our tests are running on.
• The results of the test session are then communicated to the server and then back
to the client system in terms of logs, using the mobile JSON wire Protocol.
20. Locators
Identifying or locating the elements on the web or mobile using its value or property is known as locator.
Below are the locator types to find element using find_element() and find_elements() :
• id
• className
• text
• By Index number
• By Content-description
• xpath
There are two types of Xpaths :
• Relative Xpath
• Absolute Xpath
22. Appium Features
Supports WebDriver Protocol: WebDriver Protocol gives a better control over web UI Automation without
interrupting with the JS running on the page. Appium still is backwards compatible with the JSON wire
protocol.
Robust Test Execution: Appium can easily tests regardless of device being locally available or being on a
remote server. The tests can be monitored in real-time as well.
Multi-Platform Support: Appium can execute test cases across multiple platforms. As of now Appium
supports android, iOS and windows applications.
Supports Old Android Versions through Selendroid: Support for older android versions(version 4.1 and
below) can be achieved through Selendroid driver.
Parallel Execution: Appium enables users to execute test automation scripts on multiple android or iOS
sessions. This can be achieved using UIAutomator, UIAutomation and Xcode9.
23. Appium Philosophy
• A Mobile automation framework shouldn’t reinvent the wheel when it
comes to automation APIs.
• A Mobile automation framework should be open source, in spirit and
practice as well as in name.
• You shouldn’t have to recompile your app or modify it in any way in order
to automate it.
• You shouldn’t be loced into a specific language or framework to write and
run your tests.
25. Android
• Java (version 8 or later)
• Android SDK API (version 17 or later)
• Android Virtual Device (AVD) or real device
• Node and npm
IOS
Xcode (greater than or equal to 4.6.3; 5.1 is
recommended) with the command-line built tool
• Mac OS X 10.7 or later
• Java version 8 or later
• Homebrew
• Node and npm
27. Advanced
Features
Download, Install and then Setup Appium for Windows:
1. Install JDK (Java Development Kit) set JDK path in windows
2. Install Android SDK (Software Development Kit) set SDK path in windows
3. Install Eclipse or Intellij
4. Install Appium and Appium desktop client
5. Configure Appium after installation
6. Install Node.js
7. Install Selenium server JAR
8. Appium client library (in Java, Ruby, Python, PHP, Javascript, and C#)
9. Add these files to Eclipse Project (or as Dependencies)
29. Step2: Start Eclipse or any other IDE
Create New Project
Add Dependencies in the project
Language client Library (i.e. Java)
Selenium Libraries (To use webDriver)
30. Step3: Add Desired Capabilities in Java code for selenium server
Step4: Find Object’s ID in App by UIAutomator or UIAutomatorViewer.
Use these ID values of respective elements in code to test your app accordingly.
32. Pros & Cons
Pros:
• Cross-platform support for Android and iOS
• Open-source and has a large developer community
• Supports multiple programming languages
• Supports multiple testing frameworks
• Easy setup
Cons:
• Limited support for non-mobile platforms
• Limited support for testing mobile web applications
• Requires access to the source code of the app for testing
• Some features may not be available on certain versions of iOS or Android
• Can be slow and resource-intensive when running tests.
34. Appium has a large and active community of developers, which means that it is
likely to continue to evolve and improve over time. Additionally, as mobile
devices and operating systems continue to evolve, Appium will need to adapt to
support these changes.
In conclusion, while it's impossible to predict the future with certainty, it's
reasonable to assume that Appium will remain a relevant and valuable tool for
mobile application test automation in the coming years.
Future Of Appium