I have been writing Selenium Browser automated tests and now I would like to begin writing mobile browser automated tests for Android and IPhone. I am deciding between the Appium framework and the Selenium AndroidDriver and IPhoneDriver. Does anyone have experience in these frameworks and knows which framework is easier to jump into from Selenium Browser automation? Also which framework looks to be the most active, supported, and likely to be a good choice for the future development?
The main differences between Appium and AndroidDriver/iPhoneDriver are architectural.
The AndroidDriver/iPhoneDriver work the same basic way - they are applications you launch on the phone that create a webview that you can remote control with selenium. The limitations to this approach are:
- No control over hardware/operating system.
- Webviews are not a real browser, so some behaviors are different (location, iframes, resetting data, etc).
- You are limited to interacting with a webview - no native code can be tested.
Appium works by wrapping the first-party automation frameworks (UIAutomator for iPhone and UI Automation/Instrumentation for Android). The major advantages, in addition to not suffering the problems above, are:
- You can drive an actual browser, with all the browser's functionality.
- Operating system control - you can change the OS settings, clear data, and sleep apps, in addition to any hooks exposed by the OS for testing.
- You can automate native code in addition to web testing.
Finally, iPhoneDriver is officially deprecated, so don't expect any enhancements or major changes to that app in the future. Appium is updated regularly, and will likely remain compatible with new versions of the operating systems.
If you've written selenium tests for desktop browsers, you won't have too much trouble with Appium. The main 'gotcha' will be getting set up - I would recommend jumping on #appium on IRC or emailing the appium-discuss mailing list, where friendly folks are happy to help. The #1 advantage of Appium is the amazing community.
I have used a lot of frameworks, and in my personal experience appium is easier, simpler, stronger than the rest of frameworks. I have tried with calabash, appium, ranorex. Every week appium has updates and bug fixes. And personally the python binding is a blessing.
I would suggest Appium as it is being used by the popular test lab Sauce Labs so it looks like it would be more active and get more support down the line. https://saucelabs.com/mobile