+ All Categories
Home > Technology > Mobile automation using appium.pptx

Mobile automation using appium.pptx

Date post: 08-Feb-2017
Category:
Upload: vodqa
View: 42 times
Download: 2 times
Share this document with a friend
16
Advance Appium Workshop Mobile automation using Appium : An open source, cross platform tool for automating native, mobile web and hybrid applications
Transcript
Page 1: Mobile automation using appium.pptx

Advance Appium Workshop

Mobile automation using Appium : An open source, cross platform tool for automating native, mobile web and hybrid

applications

Page 2: Mobile automation using appium.pptx

Instruments Controller

(iOS)

Instruments Command Server

Unix Socket Server

Instruments Command Client

Unix Socket Client

Instruments

bootstrap.js

WebDriver Controller

iOS - UI Automation

WebDriver Script

Page 3: Mobile automation using appium.pptx

UiAutomator Controller (Android)

UiAutomator Command

Client

TCP Client

WebDriver Controller

Android - UI Automator (4.2+), Selendroid (2.3+)

WebDriver Script

TCP Server

UiAutomator Command

Server

bootstrap.jar

Page 4: Mobile automation using appium.pptx

Appium Dependency Graph

Page 5: Mobile automation using appium.pptx

Appium Dependency Graph

Page 6: Mobile automation using appium.pptx

Horizontal Swiping

X Axis

Y Axis

(0,H/2)

(0,0)

(W/2,H/2)

Slider Element

Page 7: Mobile automation using appium.pptx

Vertical Swiping

X Axis

Y Axis

(0,0)H

EIG

HT

Width

(W/2, H-20)

(W/2, H/2 + 50)

Page 8: Mobile automation using appium.pptx

Deprecated Method in 5.0.0

★ AppiumDriver#swipe(int, int, int, int, int)★ AppiumDriver#pinch(WebElement)★ AppiumDriver#pinch(int, int)★ AppiumDriver#zoom(WebElement)★ AppiumDriver#zoom(int, int)★ AppiumDriver#tap(int, WebElement, int)★ AppiumDriver#tap(int, int, int, int)★ AppiumDriver#swipe(int, int, int, int, int)★ MobileElement#swipe(SwipeElementDirection, int)★ MobileElement#swipe(SwipeElementDirection, int, int, int)★ MobileElement#zoom()★ MobileElement#pinch()★ MobileElement#tap(int, int)★ io.appium.java_client.SwipeElementDirection★ io.appium.java_client.TouchebleElement

Page 9: Mobile automation using appium.pptx

PageObjects Via AppiumFieldDecorator

@FindBy(someStrategy) //for browser or web view html UI@AndroidFindBy(someStrategy) //for Android native UI @iOSFindBy(someStrategy) //for iOS native UI MobileElement someElement;

//the fully cross platform examle@FindBy(someStrategy)@AndroidFindBy(someStrategy) //for Android native UI @iOSFindBy(someStrategy) //for iOS native UI List<MobileElement> someElements;

Page 10: Mobile automation using appium.pptx

PageObjects Locators

UIAutomator

iOSNsPredicates

IdclassNameaccessibilityIDtagNameXPath

iOS9

iOS10

iOSFindBy

iOSXCUITFindBy

Page 11: Mobile automation using appium.pptx

Chained Locators

@FindBys({@FindBy(someStrategy1), @FindBy(someStrategy2)}) @AndroidFindBy(parent) @AndroidFindBy(child)@iOSFindBy(parent) @iOSFindBy(child) MobileElement someElement;

@FindBys({@FindBy(someStrategy1), @FindBy(someStrategy2)}) @AndroidFindBy(parent) @AndroidFindBy(child)@iOSFindBy(parent) @iOSFindBy(child)List<MobileElement> someElements;

Page 12: Mobile automation using appium.pptx

Any Possible

@HowToUseLocators(androidAutomation = ALL_POSSIBLE, iOSAutomation = ALL_POSSIBLE)@FindAll{@FindBy(someStrategy1), @FindBy(someStrategy2)}) @AndroidFindBy(fakeID1) @AndroidFindBy(someStrategy2) @iOSFindBy(fakeID1) @iOSFindBy(someStrategy2) MobileElement someElement;

@HowToUseLocators(androidAutomation = ALL_POSSIBLE, iOSAutomation = ALL_POSSIBLE)@FindAll({@FindBy(someStrategy1), @FindBy(someStrategy2)}) @AndroidFindBy(fakeID1) @AndroidFindBy(someStrategy2)@iOSFindBy(fakeID1) @iOSFindBy(someStrategy2)List<MobileElement> someElements;

Page 13: Mobile automation using appium.pptx

Any Possible

@HowToUseLocators(androidAutomation = ALL_POSSIBLE, iOSAutomation = ALL_POSSIBLE, iOSXCUITAutomation = ALL_POSSIBLE)@FindAll({@FindBy(someStrategy1), @FindBy(someStrategy2)}) @AndroidFindBy(fakeID1) @AndroidFindBy(someStrategy2)@iOSFindBy(fakeID1) @iOSFindBy(someStrategy2)@iOSFindBy(uiAutomator = "scrollViews().firstWithPredicate(\"value CONTAINS 'View one' \")")@iOSXCUITFindBy(iOSNsPredicate = "label contains 'View one'")@iOSXCUITFindBy(className = "fakeID1")@iOSXCUITFindBy(accessibility = "fakeID2")List<MobileElement> someElements;

Page 14: Mobile automation using appium.pptx

WaitTimeOut

PageFactory.initElements(new AppiumFieldDecorator(searchContext, /*searchContext is a WebDriver or WebElement instance */ new TimeOutDuration(15, //default implicit waiting timeout for all strategies TimeUnit.SECONDS)), pageObject //an instance of PageObject.class);If time of the waiting for elements differs from usual (longer, or shorter when element is needed only for quick checkings/assertions)@WithTimeout(timeOut = yourTime, timeUnit = yourTimeUnit)MobileElement someElement;

@WithTimeout(timeOut = yourTime, timeUnit = yourTimeUnit)List<MobileElement> someElements;

Page 15: Mobile automation using appium.pptx

References

• vodQA Github - https://github.com/saikrishna321/VodQa_MobileAutomationWorkShop

• Appium Architecture - http://appium.io/slate/en/master/?java#introduction-to-appium

• Appium [Sauce Labs] - https://saucelabs.com/appium• https://github.com/SrinivasanTarget/awesome-appium• https://github.com/hariharanwebmail/VodQAReactNative• https://github.com/saikrishna321/VodQaAdvancedAppium• https://github.com/saikrishna321/AppiumTestDistribution• https://github.com/saikrishna321/PageObjectPatternAppium• https://github.com/appium/java-client


Recommended