appium overview (selenium israel #2, feb. 2014)

29
AN OVERVIEW OF Appium Feb. 2014 Daniel Puterman (L inkedIn , twitter ) Sr. developer

Upload: danielputerman

Post on 06-May-2015

2.664 views

Category:

Technology


0 download

DESCRIPTION

An overview of Appium mobile testing framework I presented in the Selenium Israel meetup on February 2014.

TRANSCRIPT

Page 2: Appium overview (Selenium Israel #2, Feb. 2014)

whoami?

• Been programming forever.• Currently lead developer at Applitools (check out our intro video).• Before:

• Vioozer• iCircl• Matrix• Beyond Security• ….

• Team leader, Developer, Entreprenuer.

Page 3: Appium overview (Selenium Israel #2, Feb. 2014)

“Appium is an open source test automation framework for use with native and hybrid mobile apps.”

APPIUM AUTOMATES MOBILE APPS

Page 4: Appium overview (Selenium Israel #2, Feb. 2014)

A rising star..

Page 5: Appium overview (Selenium Israel #2, Feb. 2014)

DEMOCode for the demo available in:https://github.com/danielputerman/appium-overview

Page 6: Appium overview (Selenium Israel #2, Feb. 2014)

Automating with Appium

Appium was created with 4 design goals in mind:

• Test the same app you submit to the market place.• Write tests in any language, on any platform.• Use standard automation specification / api.• Open source.

Soooo… Ummmm……

Page 7: Appium overview (Selenium Israel #2, Feb. 2014)

WebDriver!

Page 9: Appium overview (Selenium Israel #2, Feb. 2014)

Therefore…

Page 10: Appium overview (Selenium Israel #2, Feb. 2014)

ONE SCRIPT TO RULE THEM ALL

Page 11: Appium overview (Selenium Israel #2, Feb. 2014)

No Proprietary IDE / Language

Page 12: Appium overview (Selenium Israel #2, Feb. 2014)

OPEN SOURCE

APACHE LICENSE 2.0

:// . / / / / /https github com appium appium blob master LICENSE

Page 13: Appium overview (Selenium Israel #2, Feb. 2014)

• Native & Hybrid apps• Real devices & Simulators• Available also on the grid (e.g., SauceLabs)

Supported platforms

And….• Even works with Robots

Page 14: Appium overview (Selenium Israel #2, Feb. 2014)

A little deeper: Android

Page 15: Appium overview (Selenium Israel #2, Feb. 2014)

A little deeper: iOS

Page 16: Appium overview (Selenium Israel #2, Feb. 2014)

Show me the code!Code for available in:https://github.com/danielputerman/appium-overview

Page 17: Appium overview (Selenium Israel #2, Feb. 2014)

Finding elements

Appium translates webdriver “find” commands to the relevant automation API provided by each platform:Four “find” methods available• “name”: The text on the element / accessibility identifier• “tag_name”: the type of an element, e.g., “button”, “textfield” etc.

• Mapping: https://github.com/appium/appium/blob/master/lib/devices/ios/uiauto/lib/mechanic.js#L29

• “Xpath”: Using the element hierarchy.• “ID”: Available for Android when running with “selendroid” as device.

Page 18: Appium overview (Selenium Israel #2, Feb. 2014)

Finding elements by namedriver.find_element(:name, “New note”)Searches label text / accessibility fields for each platform (“contentDescription” on android, “name” on iOS)

Page 19: Appium overview (Selenium Israel #2, Feb. 2014)

Finding elements by tag name driver.find_element(:tag_name, “textfield”)Searches for an element of the specified type.

Page 20: Appium overview (Selenium Israel #2, Feb. 2014)

Finding elements by xpath @driver.find_element(:xpath, '//text[contains(@value, “another”)]')

@driver.find_element(:xpath, '//text[last()]')

Page 21: Appium overview (Selenium Israel #2, Feb. 2014)

There are limitations, of course!

• Instruments is a singleton• No parallel testing of iOS apps on the same OSX instance.• Limited VM scalability.

• Appium is a relatively new product and is in the process of maturing.• Documentation is not bad, but can be improved quite a bit.• Error messages (especially for iOS) can be sometimes hard to figure

out.

Page 22: Appium overview (Selenium Israel #2, Feb. 2014)

The future

• Mobile Json Wire Protocol (part of Selenium 3) https://code.google.com/p/selenium/source/browse/spec-draft.md?repo=mobile• Joint effort of Appium, Facebook, Ebay and Mozilla• Appium would implement the protocol + backword

compatibility.

• Additional platforms• Appium Doctor• Advanced gestures

Page 23: Appium overview (Selenium Israel #2, Feb. 2014)

Tips I: Appium setup

• Pay attention to the requirements!• Node version (>= 0.8)• Android API >= 17 (i.e. 4.2.2 and above)

• Windows is still considered beta, though seems to be working fine • iOS

• Mac OS X 10.7 or higher, 10.8.4 recommended• XCode >= 4.6.3• Apple Developer Tools (iPhone simulator SDK, command line tools)

• For Mac, make sure you use the XCode version matching the iOS version you wish to test• https://github.com/appium/appium/blob/master/docs/running-on-osx.md#testing-against-multiple-ios-sdks

Page 24: Appium overview (Selenium Israel #2, Feb. 2014)

Tips II: running Appium

• Desired capabilities, Desired capabilities, Desired capabilities!• On linux/Mac use ‘sudo –E’ (or ‘sudo –sE’) to have the environment

variables available when Appium is run.• Notice the IP you listen to when starting Appium (the ‘-a’ parameter):• 127.0.0.1 will only listen to itself and localhost.• 0.0.0.0 will listen to itself, localhost, 127.0.0.1 and the actual computer IP(s).

• Parallel testing?• Run multiple Appium servers, each listening to a different port, and to a

specific device using the ‘–U’ option.

• Use ‘–full-reset’ when running on Android, so tests will start from a clean environment.

Page 25: Appium overview (Selenium Israel #2, Feb. 2014)

FAQQ: Can I automate webview applications?

A: Definitely.1. If you’re using Android, the “device” in the desired capabilities should be set to

“selendroid”.2. Switch to webview: driver.switch_to_window(“WEBVIEW”)3. Automate as standard web.4. If required: driver.switch_to_window(“NATIVE”)

Q: What about an application which activates another application? (FB, maps etc.)

A: Depends• For Android, not a problem.• For iOS, switching to a different application loses the context in which the automation run.

You need to create a new session when coming back from the external application.https://groups.google.com/forum/#!topic/appium-discuss/38wLkiS_7L0

Page 26: Appium overview (Selenium Israel #2, Feb. 2014)

FAQ Cont.Q: Can I automate an application already installed on a device (without having the app file on my computer)?

A: Yes and no • Android: You can, either for simulator or for real device (just set ‘app-package’ and ‘app-activity’).• iOS: No problem if you use a simulator (use ‘bundleId’ as the value to the ‘app’ parameter), but for a

real device you must have the app file on your computer.

Page 27: Appium overview (Selenium Israel #2, Feb. 2014)

UI ValidationDEMO

Code for available in:https://github.com/danielputerman/appium-overview

Page 28: Appium overview (Selenium Israel #2, Feb. 2014)

Additional resources

• Appium website• Home: http://appium.io/• Documentation: http://appium.io/getting-started.html

• Appium forum on google. If you have a question or a problem, this is the place to go.• https://groups.google.com/forum/#!forum/appium-discuss

• Code for the demos• https://github.com/danielputerman/appium-overview

Page 29: Appium overview (Selenium Israel #2, Feb. 2014)

Thanks!