Cross-platform test automation for native, hybrid, mobile web and desktop apps.
Documentation |
Get Started |
Ecosystem |
Changelog |
Roadmap |
Discussion Forum
Appium is an open-source automation framework that provides
WebDriver-based automation possibilities for a wide range of
different mobile, desktop and IoT platforms. Appium is modular and extensible, and supports multiple
programming languages, which means there is an entire ecosystem of related software:
- Drivers add support for automating specific platforms
- Clients allow writing Appium tests in your programming language of choice
- Plugins allow to further extend Appium functionality
Migrating From Appium 1 to Appium 2
As of January 1st, 2022, the Appium team no longer maintains or supports Appium 1. All officially
supported platform drivers are only compatible with Appium 2.
Please read the Migration Guide if you
are still using Appium 1.
[!WARNING]
If you use Appium Desktop or Appium Server GUI, you will not be able to upgrade to Appium 2, as
both of these tools have been deprecated. Please use Appium Inspector
in combination with a standalone Appium 2 server.
Installation
Appium can be installed using npm
(other package managers are not currently supported). Please
check the installation docs for the
system requirements and further information.
If upgrading from Appium 1, make sure Appium 1 is fully uninstalled (npm uninstall -g appium
).
Unexpected errors might appear if this has not been done.
npm i -g appium
Note that this will only install the core Appium server, which cannot automate anything on its own.
Please install drivers for your target platforms in order to automate them.
Drivers
Appium supports app automation across a variety of platforms, like iOS, Android, macOS, Windows,
and more. Each platform is supported by one or more "drivers", which know how to automate that
particular platform. You can find a full list of officially-supported and third-party drivers in
Appium Ecosystem's Drivers page.
Driver management is done using Appium's Extension command-line interface:
appium driver install <driver-name>
appium driver install --source=npm <driver-name>
appium driver list --installed
appium driver update <driver-name>
appium driver update <driver-name> --unsafe
appium driver uninstall <driver-name>
Clients
Client libraries enable writing Appium tests in different programming languages. There are
officially-supported clients for Java, Python, Ruby, and .NET C#, as well as third-party clients
for other languages. You can find a full list of clients in
Appium Ecosystem's Clients page.
Plugins
Plugins allow you to extend server functionality without changing the server code. The main
difference between drivers and plugins is that the latter must be explicitly enabled on
Appium server startup (all installed drivers are enabled by default):
appium --use-plugins=<plugin-name>
You can find a full list of officially-supported and third-party plugins in
Appium Ecosystem's Plugins page.
Similarly to drivers, plugin management is also done using
Appium's Extension command-line interface:
appium plugin install <plugin-name>
appium plugin install --source=npm <plugin-name>
appium plugin list --installed
appium plugin update <plugin-name>
appium plugin update <plugin-name> --unsafe
appium plugin uninstall <plugin-name>
Server Command Line Interface
In order to start sending commands to the Appium server, it must be running on the URL and port
where your client library expects it to listen. Appium's command-line interface
is used to launch and configure the server:
appium server
appium
appium --address 127.0.0.1 --port 9000 --base-path /wd/hub
Appium supports execution of parallel server processes, as well as parallel driver sessions within a
single server process. Refer the corresponding driver documentations regarding which mode is optimal
for the particular driver or whether it supports parallel sessions.
Why Appium?
- You usually don't have to recompile your app or modify it in any way, due to the use of standard
automation APIs on all platforms.
- You can write tests with your favorite dev tools using any WebDriver-compatible language such as
Java, Python, Ruby and C#. There are also third party client implementations for other languages.
- You can use any testing framework.
- Some drivers like
xcuitest
and uiautomator2
have built-in mobile web and hybrid app support.
Within the same script, you can switch seamlessly between native app automation and webview
automation, all using the WebDriver model that's already the standard for web automation. - You can run your automated tests locally and in a cloud. There are multiple cloud providers that
support various Appium drivers (mostly targeting iOS and Android mobile automation).
- Appium Inspector can be used to visually inspect
the page source of applications across different platforms, facilitating easier test development.
Investing in the WebDriver protocol means you
are betting on a single, free, and open protocol for testing that has become a web standard. Don't
lock yourself into a proprietary stack.
For example, if you use Apple's XCUITest library without Appium, you can only write tests using
Obj-C/Swift, and you can only run tests through Xcode. Similarly, with Google's UiAutomator or
Espresso, you can only write tests in Java/Kotlin. Appium opens up the possibility of true
cross-platform native app automation, for mobile and beyond!
If you are looking for a more comprehensive description of what this is all about, please read our
documentation on How Does Appium Work?.
License
Apache-2.0