Appium is an open source automation tool for running scripts and testing native applications, mobile-web applications and hybrid applications on Android or iOS using a webdriver. Appium supports automation test on physical devices as well as an emulator or simulator both.
The tool quickly became popular because it is platform-agnostic which means you can use the same test script to test both iOS and Android apps with minimal changes.
How Appium Works?
Appium uses Client-server architecture. Here are the key components of the Appium Architecture.
2) Appium Server: Appium Server is the core component of the Appium architecture. It is written in Node.js and runs on the machine or in the cloud. The Appium Server receives requests from Appium client libraries via the JSON Wire Protocol and invokes the mobile driver (Android driver/iOS driver) to connect to the corresponding native testing automation frameworks to run client operations on the devices.
3) JSON Wire Protocol: In the Appium client-server architecture, Appium clients communicate with the Appium Server via the JSON Wire protocol that is developed by WebDriver developers team. It enables developers to access standard and predefined endpoints via a RESTful API.
4) Appium Driver: Appium is platform-agnostic and technology-agnostic. To effectively manage different platforms, Appium uses multiple drivers and converts API into automation sessions for corresponding platforms.
UiAutomator2: The default Appium driver for Android device testing
UiAutomator1: Appium driver for older android versions.
XCUITest: Appium driver for iOS device testing
WinAppDriver: Appium driver for windows device testing
Espresso: New Appium driver for Android device testing
While there is a learning curve, it is worth your time as it makes automation testing easy and effective once you get your hands on it.