Appium is an open source test automation framework which allows you to automate all native, hybrid and mobile web apps. Here’s the official website of Appium. You can download Appium for windows O.S from here. Appium is an HTTP server which was written in node.js, it’s architecture is as same as Selenium Webdriver Server.
*Receiving requests from the client libraries
*Executes the commands on the target devices & emulators
*Responds with an HTTP response.
Appium will support only Android and IOS but not Windows platform. And the architecture of Appium is different from Android to IOS.
Let me explain in simple way. Generally when you’re downloading Appium, you are basically downloading the server. When we execute our scripts, there goes an Http request in JSON format to Appium server. Then Appium server sends the command to IOS instruments which needs bootstrap.js file to automate IOS apps and for Android, it sends to UIAutomator which needs bootstrap Jar.
So you may wonder what’s UIAutomator & UIAutomation API. There’s nothing much about them. UIAutomation API was provided by Apple to write test scripts and to automate iOS apps. And UIAutomator is a framework that is developed by the Android developers to test the Android interface. When we execute the test scripts, Appium sends the command to the UIAutomator. To listen our commands we need a TCP server. So, here bootstrap.jar works as TCP server. And then it executes the command on the devices.
By the way, we also need to talk about Selendroid. Both Appium and selendroid are mobile automation tools but main difference between is that, Selendroid support Android API level upto 19 and Appium support Android API level from 17 to 23. In case of Selendroid you need to download Iphone driver separately for IOS app testing but in Appium iPhone and Android both drivers were in-built.
That’s all about Appium and it’s architecture. Now let’s start with installation. Here I’m using Ubuntu linux based operating system and I would like to confer ideas of Android app Automation. You can implement the same for IOS apps if you’ve MAC.