From the course: Mobile Testing with Appium

The relationship between Appium and Selenium - Selenium Tutorial

From the course: Mobile Testing with Appium

Start my 1-month free trial

The relationship between Appium and Selenium

- Appium is a tool for automating mobile applications but it was inspired by another tool for automating web applications called Selenium. In fact, Appium tests rely on the same protocol as Selenium tests. So it's worth talking a little bit about Selenium. Selenium exists to give its users the ability to remotely control web browsers. It is sometimes referred to as WebDriver or Selenium/WebDriver for historical reasons. But most people just call it Selenium. Selenium was designed to work with desktop browsers only, partially because that was all that existed when Selenium was invented. Because Selenium's mission did not extend to mobile apps, there was a need for something that had the ease of use of Selenium but targeted mobile apps for automation, hence Appium was born. As you can tell by the name, Appium was designed to be as compatible with Selenium as possible. Appium adopted the same protocol as Selenium so that Appium tests and Selenium tests would look and feel mostly the same. In fact, the Appium client libraries were built on top of the Selenium client libraries. We'll talk more about what these client libraries are for soon. There was a problem though. The Selenium protocol was designed only for automating web browsers. So it supported automation commands like directing the browser to go to a certain URL or finding links on a webpage and clicking them. But mobile apps are not the same as web apps. In many cases, mobile apps can support many more features or scenarios. For example, taking photos with a camera or being put into airplane mode. So Appium needed to add additional commands to the protocol to support these mobile-specific automation behaviors. And we have been continuing to extend the protocol in this way ever since. What this means is that Appium's commands are a superset of Selenium's commands. We need to talk about one more aspect of Appium and Selenium's history. Because Selenium's vision was always to encourage browser vendors to support its protocol themselves, a group was started at the World Wide Web Consortium, or the W3C, to make the Selenium protocol an official web standard. The original protocol was known as the JSON wire protocol, or JSONWP. Over the years, the new evolving protocol became known as the WebDriver protocol. And as of 2018, was an official recommendation of the W3C. Over the course of the W3C's work on the protocol, it diverged slightly from the older JSON wire protocol. What this means is that both Appium and Selenium are currently in the middle of a long phase of supporting both the new W3C standard as well as the old JSON wire protocol. Eventually the JSON wire protocol will no longer be supported. The good news is if you're getting started with Appium today, both the Appium server and the Appium client you use will fully support the new W3C protocol. But it's important to understand that there is a migration of the core API currently underway. And of course we'll discuss what I mean by Appium server and Appium client very soon.

Contents