AN OVERVIEW
OF
Appium
Feb. 2014
Daniel Puterman (LinkedIn, twitter)
Sr. developer
whoami?
• Been programming forever.
• Currently lead developer at Applitools (check out our intro video).
• Before:
•
•
•
...
APPIUM AUTOMATES MOBILE
APPS
“Appium is an open source test
automation framework for use with native
and hybrid mobile app...
A rising star..
DEMO
Code for the demo available in:
https://github.com/danielputerman/appium-overview
Automating with Appium
Appium was created with 4 design goals in mind:

• Test the same app you submit to the market place...
WebDriver!
How does it work?

UIAutomator

Test Code
Instruments
Therefore…
ONE
SCRIPT
TO
RULE
THEM
ALL
No Proprietary IDE / Language
OPEN SOURCE
https://github.com/appium/appium/blob/master/LICENSE

APACHE LICENSE 2.0
Supported platforms

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

An...
A little deeper: Android
A little deeper: iOS
Show me the code!
Code for available in:
https://github.com/danielputerman/appium-overview
Finding elements
Appium translates webdriver “find” commands to the relevant
automation API provided by each platform:
Fou...
Finding elements by name
driver.find_element(:name, “New note”)
Searches label text / accessibility fields for each platfo...
Finding elements by tag name
driver.find_element(:tag_name, “textfield”)
Searches for an element of the specified type.
Finding elements by xpath
@driver.find_element(:xpath, '//text[contains(@value, “another”)]')
@driver.find_element(:xpath,...
There are limitations, of course!
• Instruments is a singleton
• No parallel testing of iOS apps on the same OSX instance....
The future
• Mobile Json Wire Protocol (part of
Selenium 3)
https://code.google.com/p/selenium/source/
browse/spec-draft.m...
Tips I: Appium setup
• Pay attention to the requirements!
• Node version (>= 0.8)
• Android API >= 17 (i.e. 4.2.2 and abov...
Tips II: running Appium
• Desired capabilities, Desired capabilities, Desired capabilities!
• On linux/Mac use ‘sudo –E’ (...
FAQ
Q: Can I automate webview applications?
A: Definitely.
1.
2.
3.
4.

If you’re using Android, the “device” in the desir...
FAQ Cont.
Q: Can I automate an application already installed on a device (without having the app file
on my computer)?

A:...
UI Validation
DEMO
Code for available in:
https://github.com/danielputerman/appium-overview
Additional resources
• Appium website
• Home: http://appium.io/
• Documentation: http://appium.io/getting-started.html

• ...
Thanks!
Upcoming SlideShare
Loading in …5
×

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

4,123 views

Published on

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

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,123
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
182
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

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

  1. 1. AN OVERVIEW OF Appium Feb. 2014 Daniel Puterman (LinkedIn, twitter) Sr. developer
  2. 2. whoami? • Been programming forever. • Currently lead developer at Applitools (check out our intro video). • Before: • • • • • Vioozer iCircl Matrix Beyond Security …. • Team leader, Developer, Entreprenuer.
  3. 3. APPIUM AUTOMATES MOBILE APPS “Appium is an open source test automation framework for use with native and hybrid mobile apps.”
  4. 4. A rising star..
  5. 5. DEMO Code for the demo available in: https://github.com/danielputerman/appium-overview
  6. 6. 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……
  7. 7. WebDriver!
  8. 8. How does it work? UIAutomator Test Code Instruments
  9. 9. Therefore…
  10. 10. ONE SCRIPT TO RULE THEM ALL
  11. 11. No Proprietary IDE / Language
  12. 12. OPEN SOURCE https://github.com/appium/appium/blob/master/LICENSE APACHE LICENSE 2.0
  13. 13. Supported platforms • Native & Hybrid apps • Real devices & Simulators • Available also on the grid (e.g., SauceLabs) And…. • Even works with Robots
  14. 14. A little deeper: Android
  15. 15. A little deeper: iOS
  16. 16. Show me the code! Code for available in: https://github.com/danielputerman/appium-overview
  17. 17. 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.
  18. 18. Finding elements by name driver.find_element(:name, “New note”) Searches label text / accessibility fields for each platform (“contentDescription” on android, “name” on iOS)
  19. 19. Finding elements by tag name driver.find_element(:tag_name, “textfield”) Searches for an element of the specified type.
  20. 20. Finding elements by xpath @driver.find_element(:xpath, '//text[contains(@value, “another”)]') @driver.find_element(:xpath, '//text[last()]')
  21. 21. 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.
  22. 22. 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
  23. 23. 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
  24. 24. 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.
  25. 25. FAQ Q: Can I automate webview applications? A: Definitely. 1. 2. 3. 4. If you’re using Android, the “device” in the desired capabilities should be set to “selendroid”. Switch to webview: driver.switch_to_window(“WEBVIEW”) Automate as standard web. 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
  26. 26. 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.
  27. 27. UI Validation DEMO Code for available in: https://github.com/danielputerman/appium-overview
  28. 28. 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
  29. 29. Thanks!

×