Appium Architecture

You can check previous article Introduction to Appium

Supported Appium Languages :

Appium tests could be written in following languages. These are the extensions of WebDriver’s client binding and you would have to install the binding of your favorite language.

Appium is an HTTP server which is written in Node.js and exposes REST API. It creates and handles multiple WebDriver sessions. It receives connections from a client, listens for commands, executes those commands on a mobile device, and responds with an HTTP response. It is same as the Selenium server, where in selenium server gets HTTP requests from Selenium client libraries.

12

Like selenium tests, Appium tests are also written once and can be run on multiple devices (well almost). This primarily entails four entities –

  • Tests, written in one of the Appium supported languages
  • Appium server (also known as test server), which interacts with device (or emulator) running the test
  • Real Device (or emulator) to run tests on
  • Machine from where tests are run

Here in one machine can be used to run both appium server and test. In Appium video tutorial we would be running appium server on the same machine on which tests are executed. Test code performs HTTP calls to server which then translates those commands into device specific actions sent to device.  These commands are user interactions to the device for ex – clicking on button, swiping the screen, scrolling in to area etc

Client/Server Architecture

Appium is a web server which exposes a REST API. It performs following list of operations –

  • Receives connections from a client,
  • Listens for commands,
  • Executes those commands on a mobile device,
  • Responds with an HTTP response representing the result of the command execution.

Since Appium uses client server architecture, we can write our test code in any language that has a http client API, though it is easier to use one of the Appium client libraries. Appium server can be on a different machine than the one running test.

Session

Automation is performed in the context of a session. Clients initiate a session with a server specific to each library, but they all eventually send a POST /session request to the server, with a JSON object known as ‘desired capabilities’ object. At this point the server will start up the automation session and respond with a session ID which is used for sending further commands.

 

Appium Server

Appium is a server written in Node.js. It can be built and installed from source or installed directly from NPM.

Appium Clients

Appium client libraries support Appium’s extensions to the WebDriver protocol. When using Appium, Appium client libraries should be used instead of regular WebDriver client.

Appium.app and Appium.exe are GUI wrappers around the Appium server. Appium.app is for mac and Appium.exe is for window. These are bundled with everything required to run the Appium server, hence you need not worry about node. They also have element inspection capabilities, which lets you check the hierarchy of app. This facilitates writing tests. Unfortunately .app is not available for Ubuntu

Advertisements