How Appium Works?

In this post we will answer one of the most important question, which is how appium works in

  • Android OS
  • iOS

How Appium Works?

As we already know that Appium support Android, iOS and Firefox OS platforms, there should be a mechanism for Appium to handle them.

Hence Appium handles these platforms using vendor-provided frameworks

Vendor-provided frameworks

The vendor-provided frameworks for different platforms are

How Appium works in Android ?

Figure 1: How Appium works in Android

In Android, Appium works in these below given steps as shown in the above picture

  1. Appium client (C# or Java) connects with Appium Server and communicate via JSON Wire Protocol
  2. Appium Server then creates a automation session for the client and also checks the desired capabilities of client and connects with respective vendor-provided frameworks like Selendroid/UIAutomator (based on android versions)
  3. Vendor-provided frameworks will then communicate with bootstrap.jar which is running in Emulator/Real device for performing client operations
  4. Bootstrap.jar act as a TCP server to perform action on our AUT (Application Under Test)

How Appium works in iOS?

Figure 2: How Appium works in iOS

In iOS, Appium works in these below given steps as shown in the above picture

  1. Appium client (Java or Python) connects with Appium Server and communicate via JSON Wire Protocol (*ignore in C# in picture)
  2. Appium Server then creates a automation session for the client and also checks the desired capabilities of client and connects with respective vendor-provided framework UIAutomation
  3. UIAutomation will then communicate with bootstrap.js which is running in Simulator/Real device for performing client operations
  4. Bootstrap.js will perform action on our AUT (Application Under Test)

Here is the complete video of the above discussion

Thanks for reading the post and watching the video !!!

Please leave your comments and let me know if there is anything I should update in this post.

Thanks,
Karthik KK

8 comments

  1. Goyal Harsh says:

    Hi

    Could you please more elaborate on bootstrap.js. I mean bootstrap.js is installed on this device.

    Or this bootstarp.js is specific to AUT . Any Article on this?

  2. Bill W. says:

    There’s a little confusion about which bootstrap you are referring to.
    Is it bootstrap.jar – the java bootstrap program which implements class loading
    OR
    is it bootstrap.js – the javascript (ECMAScript) library?
    Thanks for clarifying

Leave a Reply

Your email address will not be published. Required fields are marked *