The document provides an overview of Appium, an open-source, cross-platform test automation tool for mobile apps, detailing its architecture, features, and limitations. It includes guidance on automating both Android and iOS applications, along with necessary installations, configurations, and sample test scripts. Additionally, it mentions how to run Appium on real devices and simulators, and offers links to resources and references for further information.
Introduction to Appium as an open-source tool for mobile app automation supporting Android, iOS, and mobile web applications.
Overview of Appium features such as cross-platform support, compatibility with multiple client libraries and APIs for native, hybrid, and web applications.
Limitations of Appium including support requirements for Android 4.2+ and iOS versions macOS 10.7+.
Explanation of Appium's client-server architecture, leveraging WebDriver JSON protocol and backend libraries for Android and iOS.
Necessary requirements for automating Android Apps using Appium, including installation of Java, Maven, and Android SDK.
Details for developing Android test scripts in Java, including project setup and defining desired capabilities.
Instructions for starting the Appium server from source or GUI, including server arguments and configurations.
Guide for automating web applications on Android using Appium, including setup details and browser handling.
Requirements for automating iOS applications with Appium, including necessary macOS, Xcode, and Appium setups.
Instructions for developing iOS test scripts in Java, highlighting setup, desired capabilities, and test creation.
Steps to run Appium server for iOS automation, including device setup and requirements for running applications.
Overview of Appium server capabilities and resources for further reference.
Methods for locating elements in Appium including strategies for Android and iOS platforms.
Features of Appium Inspector for inspecting elements, recording tests, and reviewing mobile commands.
Contact information for Mindfire Solutions and references for further information about Appium.
Agenda
Introduction
FeaturesList
Current Limitations
Understanding Architecture
Automating Android Apps
Native/ Hybrid app
Mobile Web app
Automating iOS Apps
Prerequisites and configurations
On Simulators
On Real iDevices
Short Demo
Questions & Answers
4.
Introduction
Appium is anOpen source , Cross Platform test
automation tool for mobile apps
Hosted with GitHub
Maintained by Dan Cuellar, Jonathan Lipps and
a number of other contributors
Supports automation of Native , Hybrid and
Mobile Web apps
Based on WebDriver JSON wire protocol
Based on Client-Server Architecture
Appium Server written in Node.js
Features
Common Libraryfor all the mobile
platforms e.g. Android , iOS
Selenium WebDriver Interfaces
implemented
Added mobile specific functions
e.g. driver.pinch(), driver.zoom(), driver.currentActivity(),
driver.lock() etc.
Common API for both Native and Web
components
Common API
9.
Features
Android
RealDevices
Emulators
Native Browser
Mobile Chrome
iOS
Real iDevices (e.g. iPhone, iPad etc.)
Simulators
Mobile Safari
Test Modalities
10.
Limitations
Android
NoSupport for Toast messages
Android Version 4.2+ required
iOS
Needs mac OSX 10.7+, lower versions
not supported
11.
Architecture
Client ServerArchitecture
Based on WebDriver JSON Wire Protocol
Native test libraries of respective platform is
the backbone of the backend
12.
Architecture
Android
UiAutomator( Version 4.2 or +)
Default Backend for Android
Selendroid ( Version 2.3+)
A separate open source project for
Android automation
Instrumentation is the Backend
iOS
Apple’s UIAutomation Framework
Which Native Library for Which Platform
Test Script Development:
Create a maven project in Eclipse
Add dependency
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>1.1.0</version>
</dependency>
17.
Test Script Development:
public void setUp() throws Exception
{
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "../../../apps/");
File app = new File(appDir, "App_Name.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","Android");
capabilities.setCapability("browserName", "");
capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", “package_name ");
capabilities.setCapability("appActivity", ".activity_name");
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),
capabilities);
}
public void tearDown() throws Exception
{
driver.quit();
}
18.
Starting Appium Server
FromSource:
Install Node.js
Download Appium or Clone it using GitHub
In cmd navigate to node_modules/appium/bin
Run 'node appium [server arguments]'
From GUI Interface:
Do the configurations as needed from GUI
Click launch button to launch appium server
19.
Appium Server Arguments
Usage: node appium [arguments](windows), appium & [arguments] (mac)
--app : To specify the path to the AUT(iOS: .app, android: apk)
-U , --udid : Unique device identifier of the connected physical device
-a, --address : IP Address to listen on
-p, --port : port to listen on
--session-override : Enables session override
--full-reset : (iOS) Delete the entire simulator folder. (Android) Reset
app state by uninstalling app instead of clearing app data. On
Android, this will also remove the app after the session is complete.
--no-reset : Don't reset app state between sessions
-l, --pre-launch : Pre-launch the application before allowing the first
session
Complete List :
https://github.com/appium/appium/blob/master/docs/en/server-args.md
Automating Web Apps
publicvoid setUp() throws Exception
{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("browserName", "Browser or Chrome");
capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("app", app.getAbsolutePath());
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),
capabilities);
}
22.
Automating Web Apps
Download Google Chrome(30+) in PC
Navigate to ‘chrome://inspect’
Connect device / Start Emulator
Open the browser in the Device/Emulator and
navigate to the URL under test
Click on inspect button on Chrome to get the
page source and inspect elements
How to get Locators?
Requirements : (Java)
Mac OS X 10.7+
Xcode 4.6.3+
iOS SDKs with Command Line Tools
JAVA IDE (Eclipse)
Java JDK
Maven Plugin for Eclipse
Selenium WebDriver Dependencies
Junit
Simulator/ Real Device
Appium Server
Node.js (If running appium from source)
25.
Configurations:
Environment Variables& Path Settings
JAVA_HOME
ANDROID_HOME
MAVEN_HOME
iOS SDKs with Command Line Tools
Authorize the use of Instuments
Sudo grunt authorize (If running from source)
An alert prompts to do so if used GUI version of
Appium
26.
Collecting the .appbuild of AUT
Compile and Run the source code of AUT in
iOS Simulators
Navigate to Library Application Support→ →
iPhone Simulator [version] Applications→ → →
[choose_folder_which_belongs_to_compiled_pro
ject] application_name.app→
27.
Developing Test Scripts
publicvoid setUp() throws Exception
{
File appDir = new File(System.getProperty("user.dir"), "../../../apps/");
File app = new File(appDir, “App_Name.app");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "");
capabilities.setCapability("platformVersion", "7.1");
capabilities.setCapability("platformName", "Mac");
capabilities.setCapability("deviceName", "iPhone Simulator");
capabilities.setCapability("app", app.getAbsolutePath());
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
public void tearDown() throws Exception
{
driver.quit();
}
28.
Starting Appium Server
FromSource:
From Terminal run the following commands
> brew install node # get node.js
> npm install -g appium # get appium
> npm install wd # get appium client
> appium & # start appium
From GUI Interface:
> Make required configurations from GUI
> Click Launch button to launch appium server
29.
Running with RealDevices
Specify device UDID with appium server
arguments or with the GUI version
Compile source of AUT in debug mode
AUT must be compiled with a Developers
Signature and a Developer Provisioning
profile(Not Distribution type)
Device must be authorized as a development
device with xcode
Specify Bundle ID with appium after installing
the ipa or running the AUT project directly to
device
Locating Elements
ByClass (UI component type)
E.g
UIATextField , UIAStaticText (iOS)
android.widget.Button ,
android.widget.EditText (Android)
By Xpath (An abstract representation of certain
element with constraints)
By Id
Some of the Mobile JSON Wire Protocol Strategies
Accessibility ID (for iOS the accessibility identifier and for
Android the content-description)
32.
Appium Inspector
InspectElements and the element hierarchy with a
GUI interface
Inspect the associated attributes of an element
Easily identify the Xpath for all the elements
Find the enable/disable status of an element
Record test scripts and export in the desired language
Verify mobile commands from Inspector before
implementation