Appium implements the WebDriver Protocol, a W3C standard defining
browser automation. It’s the same protocol that Selenium uses, meaning
your Selenium knowledge will translate completely to Appium skill.
So Appium is fundamentally about providing you access to the best
automation technologies that are out there, within a standard WebDriver
interface accessible from any programming language or test client.
Importantly, Appium is totally open source. Owned by the JS Foundation,
Appium has open governance and contribution processes. The Appium team
believes that open is the way to go, and the meteoric rise of Appium as a
project is a testament to this approach.
THE APPIUM DRIVERS
How does Appium organize itself to meet its vision? Each automation
technology provided by Appium is wrapped up into a bit of code called an
Appium driver. Each driver knows how to translate the WebDriver protocol
to that particular technology. And they all do quite a bit more than that,
too—most of them take care of setting up and running the underlying
technology as well.
What this means for you is that you are not just using Appium. You’re using
Appium in conjunction with one or more drivers. Even one platform (like
Android), might have multiple supported Appium drivers, which target
dierent fundamental automation technologies. For example, you can pick
between the appium-uiautomator2-driver and the appium-espresso-
driver when it comes to writing your Android tests. It’s worth getting to
know the dierent drivers so that you’re sure you’re using the best one for
your tests. While Appium does its best to ensure automation commands do
the same thing across dierent drivers, sometimes underlying dierences
make this impossible. For the Appium code samples in this guide, the iOS
driver we’ll be using is appium-xcuitest-driver, and the Android driver
will be appium-uiautomator2-driver.
THE APPIUM CLIENTS
One of the great things about Appium is that you can write Appium scripts in
any language. Because Appium is built around a client-server architecture,
clients can be written in any programming language. These clients are simply
fancy HTTP clients, which encapsulate HTTP calls to the Appium server inside
nice user-facing methods (usually in an object-oriented fashion). This guide
will be using the Appium Ruby client, which is a rubygem named appium_lib.
5