Disclaimer: The information presented in this document was sourced with gratitude from various people that are much more knowledgeable than me on this topic. I have done my best to link to these sources in-place, but credit is given to all in the reference section below.
I'm sure you could have guessed this, but this document goes over Appium. The official sites of Appium and Selenium describe the reason for their existence in a more up-to-date way I'm sure, but for my future self:
- Appium and Selenium facilitate the UI automation of applications backed by various platforms and/or browsers.
- They do the above in a way that allows a single implementation (an automated test for example) to run against numerous platforms without a change in the logic.
To be honest, I can't even come close to matching the explanation provided by the Appium team. However, again for my future self, below are notes on the referenced explanation...
Ridiculously high level flow:
- You write an automation script or test in the language of your choosing using the Appium libraries.
- When the script is run the language specific calls are each transformed into a JSON object.
- Each JSON object is the body of an individual HTTP call to the Appium server ("Browser Driver" in Selenium's case), which implements the WebDriver Specification.
- The Appium server hands the data off to a "driver" that implements an "Appium-like WebDriver specification".
- This platform specific driver handles the interaction with the platform using vendor automation frameworks.
Honestly though, please read the official explanation above, it is unmatched.
Below is a simple diagram (credit to Appium for the sample code) that demonstrates the calls listed above.