Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Android & iOS automation using
Appium
Pre se nte r : Abhishe k Swain,
Mindfire So lutio ns
About Me:
Abhishek Swain, Software QA Engineer
Mindfire Solutions
Skills : Robotium , Appium , Selenium WebDriver , Maven ...
Agenda
 Introduction
 Features List
 Current Limitations
 Understanding Architecture
 Automating Android Apps
 Nativ...
Introduction
Appium is an Open source , Cross Platform test
automation tool for mobile apps
Hosted with GitHub
 Maintai...
Features
Automation support for
 iOS Mobile
 Android
 Firefox mobile OS
Cross-Platform
Features
Automation support for
 Native App
 Hybrid App
 Mobile Web App
Application Types
Features
 Supports all the WebDriver Client Libraries
 Java
 Ruby
 Python
 JavaScript
 PHP
 C#
Multiple Client Libr...
Features
 Common Library for all the mobile
platforms e.g. Android , iOS
 Selenium WebDriver Interfaces
implemented
 Ad...
Features
 Android
 Real Devices
 Emulators
 Native Browser
 Mobile Chrome
 iOS
 Real iDevices (e.g. iPhone, iPad et...
Limitations
 Android
 No Support for Toast messages
 Android Version 4.2+ required
 iOS
 Needs mac OSX 10.7+, lower v...
Architecture
 Client Server Architecture
 Based on WebDriver JSON Wire Protocol
 Native test libraries of respective pl...
Architecture
 Android
 UiAutomator ( Version 4.2 or +)
 Default Backend for Android
 Selendroid ( Version 2.3+)
 A se...
Automation of Android Apps
Native & Hybrid Apps
Requirements : (Java)
 JAVA IDE (Eclipse)
 Java JDK
 Maven Plugin for Eclipse
 Selenium WebDriver Dependencies/Appium
...
Configurations:
 Environment Variables & Path Settings
 JAVA_HOME
 ANDROID_HOME
 MAVEN_HOME
 Android Platform Version...
Test Script Development :
 Create a maven project in Eclipse
 Add dependency
<dependency>
<groupId>io.appium</groupId>
<...
Test Script Development :
public void setUp() throws Exception
{
File classpathRoot = new File(System.getProperty("user.di...
Starting Appium Server
From Source:
Install Node.js
Download Appium or Clone it using GitHub
In cmd navigate to node_mo...
Appium Server Arguments
Usage : node appium [arguments](windows), appium & [arguments] (mac)
--app : To specify the path t...
Automation of Android Apps
Web Apps
Automating Web Apps
public void setUp() throws Exception
{
DesiredCapabilities capabilities = new DesiredCapabilities();
c...
Automating Web Apps
 Download Google Chrome(30+) in PC
 Navigate to ‘chrome://inspect’
 Connect device / Start Emulator...
Automation of iOS Apps
Requirements : (Java)
 Mac OS X 10.7+
 Xcode 4.6.3+
 iOS SDKs with Command Line Tools
 JAVA IDE (Eclipse)
 Java JDK
...
Configurations:
 Environment Variables & Path Settings
 JAVA_HOME
 ANDROID_HOME
 MAVEN_HOME
 iOS SDKs with Command Li...
Collecting the .app build of AUT
 Compile and Run the source code of AUT in
iOS Simulators
 Navigate to Library Applicat...
Developing Test Scripts
public void setUp() throws Exception
{
File appDir = new File(System.getProperty("user.dir"), "../...
Starting Appium Server
From Source:
From Terminal run the following commands
> brew install node # get node.js
> npm insta...
Running with Real Devices
 Specify device UDID with appium server
arguments or with the GUI version
 Compile source of A...
Appium Server Capabilities
Complete List:
https://github.com/appium/appium/blob/master/docs/en/caps.md
Locating Elements
 By Class (UI component type)
E.g
UIATextField , UIAStaticText (iOS)
android.widget.Button ,
android....
Appium Inspector
 Inspect Elements and the element hierarchy with a
GUI interface
 Inspect the associated attributes of ...
www.mindfiresolutions.com
https://www.facebook.com/MindfireSolutions
http://www.linkedin.com/company/mindfire-solutions
ht...
References
 appium.io
 github.com/appium/appium
Android & iOS Automation Using Appium
Android & iOS Automation Using Appium
Nächste SlideShare
Wird geladen in …5
×

Android & iOS Automation Using Appium

This presentation will help anyone interested to have a quick start guide on Appium for automation testing on Android and iOS mobile apps.

Android & iOS Automation Using Appium

  1. 1. Android & iOS automation using Appium Pre se nte r : Abhishe k Swain, Mindfire So lutio ns
  2. 2. About Me: Abhishek Swain, Software QA Engineer Mindfire Solutions Skills : Robotium , Appium , Selenium WebDriver , Maven , Junit , SQL .... Certifications : ISTQB Foundation Level, V-Skills Selenium Certified Connect Me : Facebook : http://www.facebook.com/jikun55 LinkedIn : http://in.linkedin.com/pub/abhishek-swain/58/8a/829/ Contact Me : Email : abhishek.swain@mindfiresolutions.com /mfsi.abhishek@gmail.com Skype: mfsi_abhishekswain
  3. 3. Agenda  Introduction  Features List  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. 4. Introduction Appium is an Open 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
  5. 5. Features Automation support for  iOS Mobile  Android  Firefox mobile OS Cross-Platform
  6. 6. Features Automation support for  Native App  Hybrid App  Mobile Web App Application Types
  7. 7. Features  Supports all the WebDriver Client Libraries  Java  Ruby  Python  JavaScript  PHP  C# Multiple Client Libraries
  8. 8. Features  Common Library for 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. 9. Features  Android  Real Devices  Emulators  Native Browser  Mobile Chrome  iOS  Real iDevices (e.g. iPhone, iPad etc.)  Simulators  Mobile Safari Test Modalities
  10. 10. Limitations  Android  No Support for Toast messages  Android Version 4.2+ required  iOS  Needs mac OSX 10.7+, lower versions not supported
  11. 11. Architecture  Client Server Architecture  Based on WebDriver JSON Wire Protocol  Native test libraries of respective platform is the backbone of the backend
  12. 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
  13. 13. Automation of Android Apps Native & Hybrid Apps
  14. 14. Requirements : (Java)  JAVA IDE (Eclipse)  Java JDK  Maven Plugin for Eclipse  Selenium WebDriver Dependencies/Appium Java-Client Dependency (Maven)  Android SDK  Junit  Emulator/ Real Device  Appium Server  Node.js (If running appium from source)
  15. 15. Configurations:  Environment Variables & Path Settings  JAVA_HOME  ANDROID_HOME  MAVEN_HOME  Android Platform Version 4.2+ must be installed
  16. 16. 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. 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. 18. Starting Appium Server From Source: 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. 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
  20. 20. Automation of Android Apps Web Apps
  21. 21. Automating Web Apps public void 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. 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?
  23. 23. Automation of iOS Apps
  24. 24. 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. 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. 26. Collecting the .app build 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. 27. Developing Test Scripts public void 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. 28. Starting Appium Server From Source: 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. 29. Running with Real Devices  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
  30. 30. Appium Server Capabilities Complete List: https://github.com/appium/appium/blob/master/docs/en/caps.md
  31. 31. Locating Elements  By Class (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. 32. Appium Inspector  Inspect Elements 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
  33. 33. www.mindfiresolutions.com https://www.facebook.com/MindfireSolutions http://www.linkedin.com/company/mindfire-solutions http://twitter.com/mindfires
  34. 34. References  appium.io  github.com/appium/appium

×