{"id":31964,"date":"2021-10-27T10:58:51","date_gmt":"2021-10-27T17:58:51","guid":{"rendered":"https:\/\/app14743.cloudwayssites.com\/?p=31964"},"modified":"2022-04-12T18:53:42","modified_gmt":"2022-04-13T01:53:42","slug":"what-is-appium-introduction-to-appium","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/","title":{"rendered":"Hello Appium, Part 1: What is Appium? An Introduction to Appium and its Tooling"},"content":{"rendered":"\n<p><em>In the first article in this series, learn how to get started with Appium. We&#8217;ll dig into what Appium is, the essentials of the Appium architecture and how you can use Appium to solve your mobile test automation issues today. You can also skip ahead to read about <a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-write-android-test-appium\/\">how to set up your first Appium Android test<\/a> and <a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-write-appium-ios-test\/\">how to set up your first Appium iOS test<\/a>.<\/em><\/p>\n\n\n\n<p>I recently had the privilege to speak at Appium Conf 2021 on a topic quite near to my heart: <strong>Getting started with Appium<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-why-isn-t-this-quite-basic\">Why? Isn\u2019t this Quite Basic?<\/h2>\n\n\n\n<p>If you are an intermediate or advanced Appium user, then sure, ??\u200d\u2642\ufe0f you may be familiar with this already.<\/p>\n\n\n\n<p>However, I\u2019m a fan of a concept called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Shoshin\">Shoshin<\/a> (loosely translated as \u201cBeginner&#8217;s mind\u201d) and believe that relearning something opens up new ways of solidifying concepts and often enlightens you about the gaps in your knowledge.<\/p>\n\n\n\n<p>When I started learning Appium back in 2018, I remember I had to <strong>struggle<\/strong> a lot to figure out where to start, what setups are needed to run my first test, or just even the underlying architecture.<\/p>\n\n\n\n<p>This was a lot of initial friction and I remember thinking to myself:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>It shouldn\u2019t be this hard just to <strong>get started,<\/strong> eh?<\/p><\/blockquote>\n\n\n\n<p>Appium is a great automation tool and now having used it for a few years and having gone through the trenches I wanted to improve this experience for beginners. Hence the reason for my talk and this blog series. If you are curious about the Appium talk, the video is out on <a href=\"https:\/\/www.youtube.com\/watch?v=907U1VP0RpA&amp;list=PL9Z-JgiTsOYRCcJhDfmKAah9XmAp2b903&amp;index=12&amp;t=277s\">YouTube<\/a> and slides over a <a href=\"https:\/\/automationhacks.io\/slides\/2021\/appium-conf\/hello-appium-writing-your-first-tests\/00-welcome\/\">static site<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-key-takeaways\"><a><\/a>Key Takeaways<\/h2>\n\n\n\n<p>In this 3 part series we\u2019ll deep dive into:<\/p>\n\n\n\n<ul><li>Introduction to Appium<ul><li>Understand what Appium is, what problems does it solve?<\/li><\/ul><ul><li>Understand its architecture and tooling needed<\/li><\/ul><\/li><li>Set up an Android test from scratch including dependencies<\/li><li>Set up an iOS test from scratch including dependencies<\/li><\/ul>\n\n\n\n<p>Let\u2019s begin.<\/p>\n\n\n\n<div class=\"wp-block-yoast-seo-table-of-contents yoast-table-of-contents\"><h2>Table of Contents<\/h2><ul><li><a href=\"#h-why-isn-t-this-quite-basic\" data-level=\"2\">Why? Isn\u2019t this Quite Basic?<\/a><\/li><li><a href=\"#h-key-takeaways\" data-level=\"2\">Key Takeaways<\/a><\/li><li><a href=\"#h-what-is-appium\" data-level=\"2\">What is Appium?<\/a><ul><li><a href=\"#h-appium-core-philosophy\" data-level=\"3\">Appium Core Philosophy<\/a><\/li><\/ul><\/li><li><a href=\"#h-core-concepts\" data-level=\"2\">Core Concepts<\/a><ul><li><a href=\"#h-client-server-architecture\" data-level=\"3\">Client-Server Architecture<\/a><ul><li><a href=\"#h-appium-server\" data-level=\"4\">Appium Server<\/a><\/li><li><a href=\"#h-appium-clients\" data-level=\"4\">Appium Clients<\/a><\/li><li><a href=\"#h-e2e-request-flow\" data-level=\"4\">E2E Request Flow<\/a><\/li><\/ul><\/li><li><a href=\"#h-session\" data-level=\"3\">Session<\/a><\/li><li><a href=\"#h-desired-capabilities\" data-level=\"3\">Desired Capabilities<\/a><\/li><li><a href=\"#h-appium-inspector\" data-level=\"3\">Appium Inspector<\/a><\/li><\/ul><\/li><li><a href=\"#h-setup-appium\" data-level=\"2\">Setup Appium<\/a><ul><li><a href=\"#h-step-1-install-homebrew\" data-level=\"3\">Step 1: Install Homebrew<\/a><\/li><li><a href=\"#h-step-2-install-node-and-npm\" data-level=\"3\">Step 2: Install node and npm<\/a><\/li><li><a href=\"#h-step-3-install-appium-server\" data-level=\"3\">Step 3: Install Appium server<\/a><ul><li><a href=\"#h-appium-2-0\" data-level=\"4\">Appium 2.0 ?<\/a><\/li><\/ul><\/li><li><a href=\"#h-step-4-install-java-and-set-java-home\" data-level=\"3\">Step 4: Install Java and Set JAVA_HOME<\/a><\/li><li><a href=\"#h-step-5-verify-dependencies-are-installed-with-appium-doctor\" data-level=\"3\">Step 5: Verify Dependencies are Installed with Appium Doctor<\/a><\/li><\/ul><\/li><li><a href=\"#h-conclusion\" data-level=\"2\">Conclusion<\/a><\/li><li><a href=\"#h-references\" data-level=\"2\">References<\/a><\/li><\/ul><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-is-appium\"><a><\/a>What is Appium?<\/h2>\n\n\n\n<p>Appium is an open source ecosystem of tools and libraries that help you drive your mobile apps (<strong>native, hybrid, and mobile web <\/strong>on platforms such as Android, iOS), desktop apps (Windows, Mac), and now even on platforms like Smart TV and much more ?.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-appium-core-philosophy\"><a><\/a>Appium Core Philosophy<\/h3>\n\n\n\n<p><strong>Language agnostic: <\/strong>With Appium you can choose the language binding of your choice (Such as Java, Kotlin, Python, JavaScript, Ruby, C# &#8230; ?) and don\u2019t have to be tied to the programming language of the platform vendors (Kotlin, Swift, etc.).<\/p>\n\n\n\n<p><strong>Does not reinvent the wheel:<\/strong> Appium provides a convenient API compliant with<a href=\"https:\/\/www.w3.org\/TR\/webdriver\/#:~:text=WebDriver%20is%20a%20remote%20control,the%20behavior%20of%20web%20browsers.\"> <\/a><a href=\"https:\/\/www.w3.org\/TR\/webdriver\/#:~:text=WebDriver%20is%20a%20remote%20control,the%20behavior%20of%20web%20browsers.\">Web driver protocol<\/a> that wraps automation libraries from vendors (Google UIAutomator2\/Espresso, Apple XCUITest\/UIAutomation, Windows WinApp) and allows you to write cross-platform tests.<\/p>\n\n\n\n<p><strong>No requirement of SDK<\/strong> or <strong>recompilation<\/strong> of the app: Appium can drive the app from a grey box user perspective but does not need any app compilation step.<\/p>\n\n\n\n<p><strong>Cross-platform:<\/strong> Drives apps on different platforms and provided apps have the same business logic, could drive them with a single cross-platform test.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-core-concepts\"><a><\/a>Core Concepts<\/h2>\n\n\n\n<p>Before diving into practical setup and tests, it&#8217;s important to understand the Appium ecosystem in a birds-eye so that you can make sense of all the different components at play<\/p>\n\n\n\n<p>The below high-level architecture diagram gives the perspective:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/appium-request-flow.png\" alt=\"Show E2E request from client, server to the target platform\"><\/p>\n\n\n\n<p>The core components are:<\/p>\n\n\n\n<ul><li>Client-server architecture<\/li><li>Session<\/li><li>Desired capabilities<\/li><li>Appium Server<\/li><li>Appium Clients<\/li><li>Appium Desktop<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-client-server-architecture\"><a><\/a>Client-Server Architecture<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-appium-server\"><a><\/a>Appium Server<\/h4>\n\n\n\n<ul><li>Appium is a <strong>NodeJS-<\/strong>based web server that exposes REST APIs and bridges commands to native frameworks from vendors (Google, Apple)<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-appium-clients\"><a><\/a>Appium Clients<\/h4>\n\n\n\n<ul><li>Appium provides client bindings in different languages that adhere to WebDriver protocol and exposes actions and behaviours for automation<\/li><li>Test code makes use of these clients to perform desired actions on devices<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-e2e-request-flow\"><a><\/a>E2E Request Flow<\/h4>\n\n\n\n<p>A typical request in Appium loosely looks like below:<\/p>\n\n\n\n<ul><li>The server receives a connection request from the client<\/li><li>The server listens for commands<\/li><li>The client makes a request to server<\/li><li>Server talks to different platform drivers<\/li><li>Drivers talk to native frameworks and finally the common gets executed on the target device (mobile, desktop, TV, etc)<\/li><li>The server returns an HTTP response<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-session\"><a><\/a>Session<\/h3>\n\n\n\n<ul><li>Each action in Appium happens under the context of a session<\/li><li>We generally start a session with a <strong>Desired capabilities<\/strong> object to specify the exact type of connection we want and what behaviours are we most interested in.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-desired-capabilities\"><a><\/a>Desired Capabilities<\/h3>\n\n\n\n<ul><li>Think of this as a Hashmap with the key being a unique capability\/behaviour that you want the driver to expose and values with the configurations.<ul><li>For example, you may want to set up the device in landscape or portrait mode for a test case, you can then use either of the below configurations<br><\/li><\/ul><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"orientation\": \"LANDSCAPE|PORTRAIT\"\n}<\/code><\/pre>\n\n\n\n<ul><li>You can find the complete reference on <a href=\"https:\/\/appium.io\/docs\/en\/writing-running-appium\/caps\/\">Appium docs<\/a> and I&#8217;ll highly recommend you get versed with them. In fact, there was an interesting talk called <strong>All Desired Capabilities<\/strong> by <strong>Jonah Stiennon <\/strong>in Appium Conf 2019 on this exact topic. You could watch it <a href=\"https:\/\/www.youtube.com\/watch?v=KEJBpV1XGW0\">here<\/a>.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-appium-inspector\"><a><\/a>Appium Inspector<\/h3>\n\n\n\n<ul><li>A desktop app that supports identifying selector strategies and aids in writing automated tests. Download it from Appium GitHub releases <a href=\"https:\/\/github.com\/appium\/appium-inspector\/releases\">here<\/a>.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-setup-appium\"><a><\/a>Setup Appium<\/h2>\n\n\n\n<p>Now that we understand the high-level components at play, let&#8217;s install some of these to set up our environment regardless of the platform that we choose to automate.<\/p>\n\n\n\n<p>To set up the Appium server and other utilities, we\u2019ll need to install <strong>npm, node. <\/strong>These could be easily installed with a tool like <a href=\"https:\/\/brew.sh\/\">homebrew (mac)<\/a>, <a href=\"https:\/\/docs.brew.sh\/Homebrew-on-Linux\">Linux brew (Linux)<\/a>, or <a href=\"https:\/\/chocolatey.org\/\">chocolatey (windows)<\/a><\/p>\n\n\n\n<p><em>We\u2019ll assume using a Mac\/Linux or WSL (Windows Subsystem for Linux) environment for this series but you\u2019ll be able to find equivalent steps for the Windows platform by googling.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-step-1-install-homebrew\"><a><\/a>Step 1: Install Homebrew<\/h3>\n\n\n\n<p>We&#8217;ll need it to install npm and node.<\/p>\n\n\n\n<p>To install on macOS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/bin\/bash -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/Homebrew\/install\/master\/install.sh)\"<\/code><\/pre>\n\n\n\n<p>On Linux or WSL (Windows Subsystem for Linux), you may need to install Linux brew.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-step-2-install-node-and-npm\"><a><\/a>Step 2: Install node and npm<\/h3>\n\n\n\n<p>You can download and install <a href=\"https:\/\/nodejs.org\/en\/\">node (10+)<\/a> for your platform. Prefer choosing LTS (Long term support version) since that would be the stable version.<\/p>\n\n\n\n<p>On macOS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew install node<\/code><\/pre>\n\n\n\n<p>Verify running the below command returns desired version:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node -v<\/code><\/pre>\n\n\n\n<p>And verify that npm is installed as well:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm -v<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-step-3-install-appium-server\"><a><\/a>Step 3: Install Appium server<\/h3>\n\n\n\n<p>To install Appium server &lt; 2.0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install -g appium<\/code><\/pre>\n\n\n\n<ul><li>? Do not use sudo to install Appium server<\/li><li><strong>-g<\/strong> indicates that this package would be installed globally<\/li><\/ul>\n\n\n\n<p>Verify Appium server is installed by typing <strong>appium <\/strong>command in your terminal and see all server logs.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u279c  appium-fast-boilerplate git:(main) appium\n&#91;Appium] Welcome to Appium v1.17.0\n&#91;Appium] Appium REST http interface listener started on 0.0.0.0:4723<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-appium-2-0\"><a><\/a>Appium 2.0 ?<\/h4>\n\n\n\n<p>Appium 1.2x.x would be the last version supported by Appium devs and an EOL (End of Life) plan is already published on the Appium Github repo. Read <a href=\"https:\/\/github.com\/appium\/appium\/blob\/2.0\/docs\/en\/about-appium\/1.x-eol.md\">it here<\/a>. Since Appium 2.0 is the future of the project, let\u2019s see how to install the new server and some key commands.<\/p>\n\n\n\n<p>To install Appium 2.0:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install -g appium@next<\/code><\/pre>\n\n\n\n<p>You&#8217;ll get an output like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/usr\/local\/bin\/appium -&gt; \/usr\/local\/lib\/node_modules\/appium\/build\/lib\/main.js\n\n&gt; appium@2.0.0-beta.16 postinstall \/usr\/local\/lib\/node_modules\/appium\n&gt; node .\/postinstall.js\n\nNot auto-installing any drivers or plugins\n+ appium@2.0.0-beta.16\nadded 113 packages from 587 contributors, removed 316 packages, updated 136 packages and moved 5 packages in 81.611s<\/code><\/pre>\n\n\n\n<p>With Appium 2.0, drivers are <strong>decoupled <\/strong>and <strong>not bundled<\/strong> into the main server. This makes sense since if your app is only on Android, you wouldn\u2019t need iOS, desktop, and TV drivers anyways right?<\/p>\n\n\n\n<p>We&#8217;ll install Android and iOS drivers for this project using the below commands:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>appium driver install xcuitest\nappium driver install uiautomator2<\/code><\/pre>\n\n\n\n<p>You can list all available drivers using the command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>appium driver list<\/code><\/pre>\n\n\n\n<p>Or list only installed drivers using:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>appium driver list --installed<\/code><\/pre>\n\n\n\n<p>After running the appium command, you&#8217;ll see an output like this and as you can see our installed drivers:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Appium] Welcome to Appium v2.0.0-beta.16\n&#91;Appium] Non-default server args:\n&#91;Appium]   tmpDir: \/var\/folders\/5d\/flg6q03n3j7769kffzly2x_r0000gp\/T\n&#91;Appium] Attempting to load driver xcuitest...\n&#91;Appium] Attempting to load driver uiautomator2...\n&#91;Appium] Appium REST http interface listener started on 0.0.0.0:4723\n&#91;Appium] Available drivers:\n&#91;Appium]   - xcuitest@3.53.1 (automationName 'XCUITest')\n&#91;Appium]   - uiautomator2@1.67.0 (automationName 'UiAutomator2')<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-step-4-install-java-and-set-java-home\"><a><\/a>Step 4: Install Java and Set JAVA_HOME<\/h3>\n\n\n\n<p>You can install Java from the Oracle site or the OpenJDK version:<\/p>\n\n\n\n<ul><li><a href=\"https:\/\/www.oracle.com\/java\/technologies\/downloads\/\">Oracle download site<\/a><\/li><li><a href=\"https:\/\/adoptopenjdk.net\/?variant=openjdk8&amp;jvmVariant=hotspot\">Open JDK<\/a><\/li><\/ul>\n\n\n\n<p>On macOS: If you choose to install OpenJDK, then execute the below command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew install openjdk@8<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ln -sfn \/usr\/local\/opt\/openjdk@8\/libexec\/openjdk.jdk \/Library\/Java\/JavaVirtualMachines\/openjdk-8.jdk<\/code><\/pre>\n\n\n\n<p>Add JDK home path as JAVA_HOME variable. Since we would use the Java client binding for this series, this is a needed step.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export JAVA_HOME=\/Library\/Java\/JavaVirtualMachines\/openjdk-8.jdk\/Home\nexport PATH=$JAVA_HOME\/bin:$PATH<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-step-5-verify-dependencies-are-installed-with-appium-doctor\"><a><\/a>Step 5: Verify Dependencies are Installed with Appium Doctor<\/h3>\n\n\n\n<p>Appium doctor is a CLI that provides insights on what dependencies are missing as well as how to install them. It even provides very helpful suggestions or notes on how exactly a dependency might be useful.<\/p>\n\n\n\n<p>Make sure all required dependencies are installed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install -g appium-doctor<\/code><\/pre>\n\n\n\n<p>Run below commands:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># For both android and iOS\nappium-doctor\n# For only android\nappium-doctor --android\n# For only iOS\nappium-doctor --ios<\/code><\/pre>\n\n\n\n<p>If I run it at this point in time, it intelligently warns me about the required dependencies that are installed, optional dependencies that could be installed, and how to go about installing them.<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/appium-doctor.jpg\" alt=\"Shows results of executing appium doctor command and dependencies setup\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\"><a><\/a>Conclusion<\/h2>\n\n\n\n<p>So hopefully you are set up with Appium, have a conceptual understanding of the different components, and are now ready to dive into writing our first tests for Android and iOS. Stay tuned for the next part. In the meantime, you can read the below docs to get further context.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-references\"><a><\/a>References<\/h2>\n\n\n\n<ul><li>You can read the complete intro from <a href=\"https:\/\/appium.io\/docs\/en\/about-appium\/intro\/index.html\">Appium docs<\/a><\/li><li><a href=\"https:\/\/appiumpro.com\/editions\/122-installing-appium-20-and-the-driver-and-plugins-cli\">Installing Appium 2.0 and the Driver and Plugins CLI<\/a> on Appium Pro<\/li><li><a href=\"https:\/\/www.headspin.io\/blog\/first-look-at-appium-2-0-and-new-drivers\">First Look at Appium 2.0 and New Drivers<\/a> on headspin.io<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Related Appium Articles<\/h2>\n\n\n\n<p>Looking for more? We&#8217;ve got other great content to help you dig in and get started with Appium. Here are a few places to help you get started with Appium today.<\/p>\n\n\n\n<ul><li><a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/automatic-appium-setup\/\">Install Appium the Easy Way<\/a><\/li><li><a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/appium-vs-espresso-vs-xcui\/\">Appium vs Espresso vs XCUITest \u2013 Understanding how Appium Compares to Espresso &amp; XCUITest<\/a><\/li><li><a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/top-appium-tutorials-guides\/\">A Guide to Appium \u2013 Our Top 10 Appium Tutorials in 2021<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to get started with Appium, what Appium is, its architecture and how you can use it to solve your mobile test automation issues today.<\/p>\n","protected":false},"author":87,"featured_media":32089,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[12271],"tags":[10021,16679,12783,10103,10152],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.5 (Yoast SEO v24.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is Appium? | Introduction to Appium Tooling - Applitools<\/title>\n<meta name=\"description\" content=\"Learn how to get started with Appium, what Appium is, its architecture and how you can use it to solve your mobile test automation issues today.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hello Appium, Part 1: What is Appium? An Introduction to Appium and its Tooling\" \/>\n<meta property=\"og:description\" content=\"Learn how to get started with Appium, what Appium is, its architecture and how you can use it to solve your mobile test automation issues today.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-27T17:58:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-13T01:53:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"851\" \/>\n\t<meta property=\"og:image:height\" content=\"542\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gaurav Singh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@automationhacks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gaurav Singh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/\"},\"author\":{\"name\":\"Gaurav Singh\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/38e1665a1de2aa02deb7cba27db62868\"},\"headline\":\"Hello Appium, Part 1: What is Appium? An Introduction to Appium and its Tooling\",\"datePublished\":\"2021-10-27T17:58:51+00:00\",\"dateModified\":\"2022-04-13T01:53:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/\"},\"wordCount\":1568,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg\",\"keywords\":[\"Appium\",\"appium 2.0\",\"Mobile\",\"Mobile App Testing\",\"Test Automation\"],\"articleSection\":[\"Getting Started\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#respond\"]}],\"accessibilityFeature\":[\"tableOfContents\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/\",\"name\":\"What is Appium? | Introduction to Appium Tooling - Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg\",\"datePublished\":\"2021-10-27T17:58:51+00:00\",\"dateModified\":\"2022-04-13T01:53:42+00:00\",\"description\":\"Learn how to get started with Appium, what Appium is, its architecture and how you can use it to solve your mobile test automation issues today.\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg\",\"width\":851,\"height\":542},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/blog\/category\/getting-started\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Hello Appium, Part 1: What is Appium? An Introduction to Appium and its Tooling\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"name\":\"Applitools Visual AI\",\"description\":\"Applitools delivers full end-to-end test automation with AI infused at every step.\",\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\",\"name\":\"Applitools\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"width\":156,\"height\":28,\"caption\":\"Applitools\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/38e1665a1de2aa02deb7cba27db62868\",\"name\":\"Gaurav Singh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5d3da0654d3e285896edad526418842c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5d3da0654d3e285896edad526418842c?s=96&d=mm&r=g\",\"caption\":\"Gaurav Singh\"},\"description\":\"Gaurav Singh is an experienced Software engineer in Test who loves to code in Kotlin, Python, Java, and JavaScript and builds and scales Test automation frameworks and teams. He believes in understanding and testing at all the layers of the stack and has worked with Web, Mobile, and Backend systems throughout his career in different domains. He blogs at automationhacks.io and posts about his journey and adventures in Software Engineering and Testing. Gaurav is an International conference speaker and has spoken previously at conferences like Appium Conf, Selenium Conf, and Automation Guild and shares his knowledge and learns from others. He has also built a few open-source courses for Test Automation University.\",\"sameAs\":[\"https:\/\/automationhacks.io\/\",\"https:\/\/www.linkedin.com\/in\/automationhacks\/\",\"https:\/\/x.com\/automationhacks\"],\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/author\/gauravsingh\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What is Appium? | Introduction to Appium Tooling - Applitools","description":"Learn how to get started with Appium, what Appium is, its architecture and how you can use it to solve your mobile test automation issues today.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/","og_locale":"en_US","og_type":"article","og_title":"Hello Appium, Part 1: What is Appium? An Introduction to Appium and its Tooling","og_description":"Learn how to get started with Appium, what Appium is, its architecture and how you can use it to solve your mobile test automation issues today.","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2021-10-27T17:58:51+00:00","article_modified_time":"2022-04-13T01:53:42+00:00","og_image":[{"width":851,"height":542,"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg","type":"image\/jpeg"}],"author":"Gaurav Singh","twitter_card":"summary_large_image","twitter_creator":"@automationhacks","twitter_misc":{"Written by":"Gaurav Singh","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/"},"author":{"name":"Gaurav Singh","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/38e1665a1de2aa02deb7cba27db62868"},"headline":"Hello Appium, Part 1: What is Appium? An Introduction to Appium and its Tooling","datePublished":"2021-10-27T17:58:51+00:00","dateModified":"2022-04-13T01:53:42+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/"},"wordCount":1568,"commentCount":0,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg","keywords":["Appium","appium 2.0","Mobile","Mobile App Testing","Test Automation"],"articleSection":["Getting Started"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#respond"]}],"accessibilityFeature":["tableOfContents"]},{"@type":"WebPage","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/","name":"What is Appium? | Introduction to Appium Tooling - Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg","datePublished":"2021-10-27T17:58:51+00:00","dateModified":"2022-04-13T01:53:42+00:00","description":"Learn how to get started with Appium, what Appium is, its architecture and how you can use it to solve your mobile test automation issues today.","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/10\/hello-appium-what-is-appium_831x542.jpg","width":851,"height":542},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/what-is-appium-introduction-to-appium\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/app14743.cloudwayssites.com\/"},{"@type":"ListItem","position":2,"name":"Getting Started","item":"https:\/\/app14743.cloudwayssites.com\/blog\/category\/getting-started\/"},{"@type":"ListItem","position":3,"name":"Hello Appium, Part 1: What is Appium? An Introduction to Appium and its Tooling"}]},{"@type":"WebSite","@id":"https:\/\/app14743.cloudwayssites.com\/#website","url":"https:\/\/app14743.cloudwayssites.com\/","name":"Applitools Visual AI","description":"Applitools delivers full end-to-end test automation with AI infused at every step.","publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/app14743.cloudwayssites.com\/#organization","name":"Applitools","url":"https:\/\/app14743.cloudwayssites.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","width":156,"height":28,"caption":"Applitools"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/38e1665a1de2aa02deb7cba27db62868","name":"Gaurav Singh","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5d3da0654d3e285896edad526418842c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d3da0654d3e285896edad526418842c?s=96&d=mm&r=g","caption":"Gaurav Singh"},"description":"Gaurav Singh is an experienced Software engineer in Test who loves to code in Kotlin, Python, Java, and JavaScript and builds and scales Test automation frameworks and teams. He believes in understanding and testing at all the layers of the stack and has worked with Web, Mobile, and Backend systems throughout his career in different domains. He blogs at automationhacks.io and posts about his journey and adventures in Software Engineering and Testing. Gaurav is an International conference speaker and has spoken previously at conferences like Appium Conf, Selenium Conf, and Automation Guild and shares his knowledge and learns from others. He has also built a few open-source courses for Test Automation University.","sameAs":["https:\/\/automationhacks.io\/","https:\/\/www.linkedin.com\/in\/automationhacks\/","https:\/\/x.com\/automationhacks"],"url":"https:\/\/app14743.cloudwayssites.com\/blog\/author\/gauravsingh\/"}]}},"_links":{"self":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/31964"}],"collection":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/users\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/comments?post=31964"}],"version-history":[{"count":0,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/31964\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/32089"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=31964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=31964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=31964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}