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