Top Banner
1 PRIME CUTS
36

Appium: Prime Cuts

Mar 21, 2017

Download

Technology

Sauce Labs
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Appium: Prime Cuts

1

PRIMECUTS

Page 2: Appium: Prime Cuts

ABOUTTHESPEAKERDanCuellar@thedancuellar

• CreatorofAppium• PrincipalDevelopmentManageratFOODit• PreviouslyatShazam,Zoosk,andMicrosoft• BSinComputerSciencefromCarnegieMellon

2

Page 3: Appium: Prime Cuts

AGENDA• DesktopApps

• NewAppium GUI

• AdvancedAppium

3

Page 4: Appium: Prime Cuts

4

Page 5: Appium: Prime Cuts

5

Page 6: Appium: Prime Cuts

https://github.com/Microsoft/WinAppDriver6

Page 7: Appium: Prime Cuts

• ModernUWP(UniversalWindowsPlatform)apps• Win32applications(includingpre2000)• WPFapps• WindowsFormsapps• Webviews*(sometimes)• OfficePlugins

7

Page 8: Appium: Prime Cuts

• Pen&Touchsupport

• MobilePhonesupport

• Xboxsupport

8

Page 9: Appium: Prime Cuts

9

Page 10: Appium: Prime Cuts

https://github.com/appium/appium-for-mac10

Page 11: Appium: Prime Cuts

• CurrentlyrunseparatelyfromAppium

• SupportsOSX10.7andhigher

• Supportsdetailsmouseactions

• SupportsNativeDOM

• DoesnotcurrentlysupportWebViews,butitispossibletoaddthis11

Page 12: Appium: Prime Cuts

• platform:mustbesettoMacforAppium forMac

• implicitTimeout:millisecondstotrybeforegivinguponfindinganelement

• loopDelay:delayinmillisecondsbetweenpollinginpollingloops(e.g.findelement)

• mouseMoveSpeed:0-100(50isnormal)

• diagnosticsDirectoryLocation:directoryfordiagnosticsoutput• screenShotOnError:1toenable,0todisable

12

Page 13: Appium: Prime Cuts

• driver.get("Calculator”)– launchthecalculatorapp

• driver.find_element_by_xpath(“//AXApplication[…]/…”)– findelement

• element.click()– clickanelement

• element.text – gettextforanelement13

Page 14: Appium: Prime Cuts

14

Page 15: Appium: Prime Cuts

15

Page 16: Appium: Prime Cuts

16

Page 17: Appium: Prime Cuts

17

Page 18: Appium: Prime Cuts

18

Page 19: Appium: Prime Cuts

• accessibilityIdentifier – anidentifierthatwillbeusedforthepurposesofUIautomation

• accessibilityLabel – alabelwhichassistivedeviceswillusetodescribeaUIelements

• accessibilityHint – addscontexttotheaccessibilitylabelwhenmoreexplanationisnecessary

19

Page 20: Appium: Prime Cuts

Method1XIBfileorStoryboard

defineintheaccessibilityinspector

20

Page 21: Appium: Prime Cuts

Method2Programatically

Objective-C[myElement setAccessibilyIdentifier:@”AwesomeValue”]myElement.accessibilityIdentifier =“AwesomeValue”;

SwiftmyElement.accessibilityIdentifer =“AwesomeValue” 21

Page 22: Appium: Prime Cuts

Method3UserDefinedRuntimeAttributes

definewiththekey“accessibilityIdentifier”andthetype“String”

22

Page 23: Appium: Prime Cuts

Method1idproperty

setinAndroid Studio

23

Page 24: Appium: Prime Cuts

Method2idproperty

setthepropertyandroid:id orandroid:name intheXML

24

Page 25: Appium: Prime Cuts

Ifyouaren’tseeingyourIDscheckyourselfandyourparentelements• isAccessibilityElement – whensettofalsetheelementisnotintheaccessibilityDOM

• accessibilityElementsHidden – hidethechildrenofthiselementfromtheaccessibilityDOM

Also,youmayneedtomakesurethattheUIElement implementstheUIAccessibility protocol

25

Page 26: Appium: Prime Cuts

26

Page 27: Appium: Prime Cuts

CONTEXTS

27

NativeContext WebContext

Page 28: Appium: Prime Cuts

• Xcode 7andiOS9donotsupportinstallingthespeeduptoolautomaticallythatpreviousversionsofAppium used• Noworries,youcaninstallitmanually

• https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/iwd_xcode7.md

• NowyouriOStestswillbefastagain

• iOS10andup,thesimulatortakesawhiletoboot• Thebestworkaroundistowarmthemupinadvance 28

Page 29: Appium: Prime Cuts

• iOSandAndroid• autoWebView – startinthewebview context(reallyusefulforCordovaapps)

• Android• ignoreUnimportantViews – canspeedupyourAndroidtests• nativeWebScreenshot – takesthescreenshotfromUIAutomatorinsteadofchromedriver 29

Page 30: Appium: Prime Cuts

• iOS• locationServicesAuthorized – pre-authorizeslocationservices(preventsanalert)

• Auto[Accept|Dismiss]Alerts – usefultopreventalerts• nativeWebTap – usesnon-javascript tapsonwebcontent• safariIgnoreFraudWarning – allowshttpswithoutpropercerts• interKeyDelay - timebetweenkeystrokes• sendKeyStrategy – (oneByOne,grouped,orsetValue) 30

Page 31: Appium: Prime Cuts

driver.setNetworkConnection(value)[Androidonly]

Value(Alias) Data Wifi AirplaneMode0(None) 0 0 0

1(Airplane Mode) 0 0 1

2(Wifi only) 0 1 0

4(Dataonly) 1 0 0

6(AllNetwork on) 1 1 0

31

Page 32: Appium: Prime Cuts

• XPathisslow• Avoidusingitwherepossible• Ifyoudouseit,doitasasub-searchonamorequicklyfoundelement

• Implicittimeoutsavescodebutcanslowdowntests• Negativechecks(e.g.elementdoesnotexist)alwaystakethetimeout

• ReplacenegativecheckswithfindElements()callsandthencheckthecount32

Page 33: Appium: Prime Cuts

• Becauseofthewayit’simplemented• Ratherthanreimplement XPathsearchingfornativeelements,wetookalesscomplicatedandbrittleapproachWegenerateanXMLrepresentationofthedocument(EXPENSIVE)thensearch

• Pros• XPathisalwayscorrectandaccurateasweuseastandardimplementation

• Mucheasiertomaintain

• Cons• It’sslowbecausewemustgenerateamodeloftheentireDOM

33

Page 34: Appium: Prime Cuts
Page 35: Appium: Prime Cuts

MOREINFO• Website:http://www.appium.io

• Slack:appium.slack.com

• Forum:discuss.appium.io

• GitHub:http://www.github.com/appium/appium 35

Page 36: Appium: Prime Cuts

36