Skip to main content

Appium Concepts

Back to Appium Tutorial Index

Client/Server Architecture
Appium (to be more precise Appium Server) is a web server which exposes a REST API. It performs following 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.


Desired Capabilities

Desired capabilities are a set of keys and values (like a map) sent to the Appium server. Desired capabilities tell server what kind of automation session should be started. Capabilities doc lists the capabilities available for Appium.
Appium Server
Appium is a server written in Node.js. It can be built and installed from source or installed directly from NPM.
$ npm install -g appium
$ appium
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-desktop is GUI wrapper 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.

Popular posts from this blog

Verify email confirmation using Selenium

Note: If you are new to java and selenium then start with selenium java training videos .     Email confirmation seems to be integral part of any registration process. I came across an application which lets you provide your email address. You can follow the sign up link in you mail and then complete the registration process. Lets consider we provide GMail address for it. Now if were to use only Selenium then we would have to follow following steps - Launch GMail using Selenium; Some how search for new mail in the list of available mails; Some how click on it; Parse the mail message; Get the registration link; Follow up with registration process What do you think of an approach in which you can

Selenium Tutorial: Get attribute of an element

With Selenium 1.0 Let us consider Google Search Box for example and its "max length"is to be retrieved. Using xPath -         String var = selenium.getAttribute("//input[@name='q']/@maxlength");         System.out.println(var); Using css locator -                        String var = selenium.getAttribute("css=input[name='q']@maxlength");         System.out.println(var);        With Selenium 2.0 (WebDriver)        Using xPath -         String var = webDriver.findElement(By.xpath("//input[@name='q']")).getAttribute("maxlength")         System.out.println(var); Using css locator -                     ...

Capture network traffic using WebDriver

We often come across testing requirements when we need to analyze the network traffic to find - HTTP status of page Analyze header information to find if right information is passed Validating parameters related to ajax requests etc Selenium 1 has had a way to capture n/w traffic but the feature does not always work as expected. At times Selenium 1 does not capture all n/w traffic, And given that Selenium 1 APIs are almost dead it is