With the command life-cycle, in view the command is received from script by the Selenium web driver and in turn is sent to the Appium server in the form of JSON via http request. In the diagram above, you can see Appium’s iOS structural design. After that, Appium manages to proxy a command on iOS to a Mac Instrument’s settings. This tool sustains high level of programming test of the apps on iOS. When it comes to iOS, UIAutomation is the core part. Later, the test case is run and this happens after the commands have been listened to from the Appium server. The first thing that Appium does is that it hacks into it.
It is worth noting that iOS and Android make use of varying mechanisms in order to run the test case on the device. Moreover, it also handles them based on the platform. The latter, however, deals with http request from client libraries. The working of the app is the same as Selemium server. This is done to kick off automation which sends the command and listens for proxied comments from the server on Appium. With multiple WebDriver sessions for different platforms like Android and iOS, written in node.js, Appium is an HTTP server. This is the reason why this app has been very successful. What’s interesting is that because Appium is open source, it can be used on various devices and emulators. Automation, internally, is done by an interaction between the client libraries of Selenium and the server of Appium. This can be done without modifying the apps for automation purposes. Hence, one could write them in Java, C#, and Ruby. What’s interesting and worth noting is that the test features of Appium can be written in any language. These include the automation of native & hybrid mobile apps for iOS and Android. There are various functions that Appium performs. In order to communicate with Android and iOS native apps using Selenium WebDriver, the app makes use of JSON wire protocol. It has been developed by Sauce Labs, and it’s an open source tool for test automation. Appium is a tool that has been developed in order to help automate native, web, as well as hybrid mobile applications.