Appium solution artizone
-
Upload
nael-abd-eljawad -
Category
Software
-
view
98 -
download
0
Transcript of Appium solution artizone
![Page 1: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/1.jpg)
1Confidential and propriety Galil Software, Ltd. 2012
May 3, 2023
Automation for Mobile Apps - Appium solution
Author:Nael Abd Aljawad – QA Automation Technical Leader
![Page 2: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/2.jpg)
2Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Mobile Automation Tools Comparison
![Page 3: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/3.jpg)
3Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Appium drives iOS and Android apps using the WebDriver protocol. Appium is an open source test automation framework for use with
native, hybrid and mobile web apps.
Appium Solution
![Page 4: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/4.jpg)
4
What is it?
Native App – A native app is an app which is built for a specific platform using specific technologies like Xcode for iOS and Java for Android.
Hybrid App – A hybrid app is an app which uses native as well as web technologies to bring best of both worlds.
Html5 App – Html5 app is not installed on a phone. It runs on a browser and built using web technologies such that it is fully optimized for screen it runs on.
![Page 5: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/5.jpg)
5
Features Comparison
Feature Native Hybrid HTML5Performance Fast Controlled SlowMulti-touch/pinch Yes Yes NoDevice Access All Almost all Very fewSecure storage Yes Yes Shared/NoConnectivity Online/Offline Online/Offline Mostly OnlineRollout Slow/painful Slow/painful FastSecurity High Low LowBest for Games/low content Medium dynamic content High dynamic content
Tools Xcode, Eclipse Phonegap, Worklight Any web basedDistribution Downloaded to device
from AppStoreHosted on a Web server and accessed on a Web Browser
Downloaded to device from AppStore
Integration Supports integration with device features such as camera and address book
Doesn’t support integration with device components
Supports integration with device features such as camera and address book
Notifications Yes No Yes
![Page 6: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/6.jpg)
6
Market overview
Facebook moved away from HTML5 apps Twitter uses hybrid app approach A lot of ecommerce sites have HTML5 based mobile websites LinkedIn also recently moved to native app
![Page 7: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/7.jpg)
7
HTML5 vs. Hybrid vs. Native
![Page 8: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/8.jpg)
8
Appium Philosophy
Appium was designed to meet mobile automation needs according to a philosophy outlined by the following four tenets:1. You shouldn't have to recompile your app or modify it in any way in
order to automate it. you're testing the same app you're shipping
2. You shouldn't be locked into a specific language or framework to write and run your tests
3. A mobile automation framework shouldn't reinvent the wheel when it comes to automation APIs. extended the JSON protocol with extra API methods useful for mobile automation
4. A mobile automation framework should be open source, in spirit and practice as well as in name
![Page 9: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/9.jpg)
9Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Client/Server Architecture
Receives connections from a client Listens for commands Executes the commands on a mobile device Responds with an HTTP response representing the result of the
command execution
![Page 10: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/10.jpg)
10
Selenium WebDriver
Script (C#,Java,Perl,Python,PHP)
Server written in node.js
IDEJSON WIRE Protocol via http
UIAutomator
request via USB
UIAutomation request via USB
![Page 11: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/11.jpg)
11Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Appium Architecture
![Page 12: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/12.jpg)
12Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Session
Session Object
Clients initiate a session with a server in ways specific to each library All libraries end up sending a POST /session request to the server,
with a JSON object called the 'desired capabilities' object the server will start up the automation session and respond with a
session ID which is used for sending further commands
![Page 13: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/13.jpg)
13Confidential and propriety Galil Software, Ltd. 2012
25.12.11
JSON
Desired capabilities tell the Appium server what kind of automation session we're interested in starting up
There are various capabilities which can modify the behavior of the server during automation (e.g. tell Appium that we want an iOS session, rather than an Android one)
Desired Capabilities
![Page 14: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/14.jpg)
14Confidential and propriety Galil Software, Ltd. 2012
25.12.11
AppiumServer
Appium Server
Appium is a server written in Node.js. It can be built and installed from source or installed directly from
NPM
![Page 15: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/15.jpg)
15Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Appium Clients
There are client libraries which support Appium's extensions to the WebDriver protocol. When using Appium, you want to use these client libraries instead of your regular WebDriver client.
![Page 16: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/16.jpg)
16
Language Clients
Github Repo and Installation Instructions Language/Frameworkhttps://github.com/appium/ruby_lib Ruby
https://github.com/appium/python-client Python
https://github.com/appium/java-client Java
https://github.com/admc/wd JavaScript (Node.js)
https://github.com/appium/selenium-objective-c Objective C
https://github.com/appium/php-client PHP
https://github.com/appium/appium-dotnet-driver C# (.NET)
http://github.com/appium/perl-client Perl https://github.com/jollychang/robotframework-appiumlibrary
RobotFramework
![Page 17: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/17.jpg)
17Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Mobile Star Wars
![Page 18: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/18.jpg)
18Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Appium GUI
![Page 19: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/19.jpg)
19
Inspectors
Android UIautomatorviewer / IOS UIautomation - A GUI tool to scan and analyze the UI components of an Android/IOS application.
Web & Hybrid apps: Chrome://inspect/#devices
![Page 20: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/20.jpg)
20
IOS
Versions: 6.0, 6.1, 7.0, 7.1, 8.0, and 8.1 Devices: iPhone Simulator, iPad Simulator, and real iPhones and
iPads Native app support: Yes Mobile web support: Yes, via automation of mobile Safari. Hybrid support: Yes. Support for automating multiple apps in one session: No Support for automating multiple devices simultaneously: No
![Page 21: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/21.jpg)
21
Android
Versions: 2.3 and up Devices: Android emulators and real Android devices Native app support: Yes Mobile web support: Yes Hybrid support: Yes Support for automating multiple apps in one session: Yes Support for automating multiple devices simultaneously: Yes
![Page 22: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/22.jpg)
22
TouchActions
![Page 23: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/23.jpg)
23
MultiTouchActions
![Page 24: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/24.jpg)
24
Hybrid Apps Views Switching
![Page 25: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/25.jpg)
25
Requirements - Java
JAVA IDE (Eclipse) Java JDK Maven Plugin for Eclipse Selenium WebDriver Dependencies/Appium Java-Client
Dependency (Maven) Android SDK TestNG/Junit Emulator/ Real Device Appium Server Node.js (If running appium from source) Mac OS X 10.7 or higher XCode >= 4.6.3 Apple Developer Tools (iPhone simulator SDK, command line tools) Homebrew Node and npm
![Page 26: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/26.jpg)
26
Java JDK
Download java JDK :www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
to add new variable and edit the path. right click on computer - > properties -> Advanced system settings -> Environment variablesAdd new variable : New : variable name : JAVA_HOME variable value : C:\Program Files\Java\jdk1.7.0_79
Edit Path : ;C:\Program Files\Java\jdk1.7.0_79\bin
By Makram
![Page 27: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/27.jpg)
27
Download Eclipse ( with TestNG & Maven)
www.eclipse.org Add TestNG plugin : Help -> install new software -> Add -> Name : TestNG
Location : http://beust.com/eclipse Add Maven : Help -> install new software -> Add -> Name : Maven Location : http://download.eclipse.org/technology/m2e/releases
By Makram
![Page 28: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/28.jpg)
28
ADT Plugin
ADT Plugin ( Android Developer Tools) :
Help -> install new software -> Add -> Name : ADT Plugin Location : https://dl-ssl.google.com/android/eclipse/
By Makram
![Page 29: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/29.jpg)
29
Android SDK
Android SDK ( Software Developer Kit) :developer.android.com/sdk/index.html
To add the location of the android sdk folder to eclipse :Window -> Preferences -> Android
SDK Location : the path of the android-sdks
By Makram
![Page 30: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/30.jpg)
30
ANDROID_HOME
To add new variable and edit the path. right click on computer - > properties -> Advanced system settings -> Environment variablesAdd new variable : New : variable name : ANDROID_HOME variable value : path\android -sdks
Edit Path : ; path\android –sdks\platform-toolsEdit Path : ; path\android –sdks\tools
By Makram
![Page 31: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/31.jpg)
31
Appium
Install Appium server : http://appium.io/downloads.html
Download Appium and Selenium jars from Maven repositories
Selenium : http://www.seleniumhq.org/download/Java-client : https://search.maven.org/#search%7Cga%7C1%7Cjava-client
By Makram
![Page 32: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/32.jpg)
32
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>
![Page 33: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/33.jpg)
33
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"); }
AndroidDriver driver=new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
AppiumDriver driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
![Page 34: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/34.jpg)
34
SauceLabs
Automated testing in the cloud for CI. Provides the world’s largest cross-browser grid for executing
Selenium & Appium WebDriver tests
![Page 35: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/35.jpg)
35
SauceLabs – Username & Access Key
![Page 36: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/36.jpg)
36
SauceLabs - Setuppublic class AppiumDriverTest {
private AppiumDriver driver;
@Parameters({"username", "key", "os", "browser", "browserVersion"}) @BeforeMethod public void setUp(@Optional("nael_sl") String username, @Optional("e8ea754d-c8a0-488f-993c-15f583ab2179") String key, @Optional("mac") String os, @Optional("iphone") String browser, @Optional("5.0") String browserVersion, Method method) throws Exception {
// Choose the browser, version, and platform to test DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setBrowserName(browser); capabilities.setCapability("version", browserVersion); capabilities.setCapability("platform", Platform.valueOf(os)); capabilities.setCapability("name", method.getName()); // Create the connection to Sauce Labs to run the tests this.driver = new RemoteWebDriver(new URL("http://" + username + ":" + key + "@ondemand.saucelabs.com:80/wd/hub"),capabilities); }
@Test public void webDriver() throws Exception { // Make the browser get the page and check its title driver.get("http://www.amazon.com/"); assertEquals("Amazon.com: Online Shopping for Electronics, Apparel, Computers, Books, DVDs & more", driver.getTitle()); }
}
![Page 37: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/37.jpg)
37
AUTOMATED TEST CONFIGURATOR
![Page 38: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/38.jpg)
38
Android is the Winner
![Page 39: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/39.jpg)
39Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Drivers Relationship
![Page 40: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/40.jpg)
40Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Web driver FW Design
![Page 41: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/41.jpg)
41Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Appium Design
![Page 42: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/42.jpg)
42Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Current FW
![Page 43: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/43.jpg)
43Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Report
![Page 44: Appium solution artizone](https://reader035.fdocuments.us/reader035/viewer/2022070602/587d8c8d1a28abcd648b666b/html5/thumbnails/44.jpg)
44Confidential and propriety Galil Software, Ltd. 2012
25.12.11
Thank You Nael Abd Aljawad – QA Automation Technical Leader