Appium Architecture

 

The diagram you provided illustrates the Appium Architecture, which is based on a client-server model. Let's break it down step by step:









Appium Architecture


Components of the Appium Architecture:


1. Webdriver Script (Client)

  • This is your test script, written in any supported programming language (like Java, Python, JavaScript, etc.).

  • It sends commands to the Appium Server using the WebDriver protocol (also called JSON Wire Protocol or W3C WebDriver).


2. Appium Server

  • It acts as a HTTP server written in Node.js.

  • Receives the commands from the test script (client).

  • Parses these commands and sends them to the respective native automation frameworks (like UIAutomator2, XCUITest, etc.).

  • Acts as a bridge between the client (script) and the mobile device.



3. Mobile Device

  • The actual Android or iOS device where the app is installed and tested.

  • Executes the commands sent via the native automation framework.


Communication Flow:

  1. Test Script to Appium Server

    • The WebDriver test script sends requests (example: click, tap, send keys) to the Appium Server using WebDriver Wire Protocol over HTTP.



  • Appium Server to Mobile Device
    • Appium translates these commands into actions using the Native Automation Framework:

      • For Android: UIAutomator2 or Espresso

      • For iOS: XCUITest

    • The framework interacts directly with the app installed on the mobile device.



  • Execution Results Back
    • The response from the mobile device (e.g., element clicked, text entered) goes back through the same path in reverse:

      • Native framework → Appium Server → WebDriver Script



At a Glance:



ComponentRole
Webdriver ScriptSends test commands using WebDriver protocol
Appium ServerActs as a middleware to translate commands to native automation code
Mobile DeviceExecutes the commands and returns results